2012-03-12 4 views
0

で配列を作成:in_array()がnullを与えられ、パラメータ2が配列であることを期待します 警告:array_push()は、配列1、配列nullを期待しています動的に私は動的に配列を作成し、その変数を使用して配列名を構築することで、それらを埋めるためにしようとしていますが、私は</p> <p>警告以下の警告になっていますPHP

この配列は、配列の配列に対しては機能しません。これはどのように行うべきですか?

<?php 

for ($i = 1; $i <= 23; ++$i) 
{ 
     $word_list[$i] = array("1"); 
} 


for ($i = 1; $i <= 23; ++$i) 
{ 
    $word = "abc"; 
    $arrayName = "word_list[" . $i . "]"; 
    if(!in_array($word, ${$arrayName})) 
    { 
    array_push($$arrayName , $word); 
    } 
} 


?> 
+0

'echo $ arrayName'と' echo $$ arrayName'を試して、あなたが得るものを見てください。私は何かの役に立たず、nullは、エラーメッセージのように賭ける。 –

答えて

5

で、中その名前を参照解除しますか?ちょうどこれをしない理由:あなたの$arrayName変数は実際には配列ではありませんので、

for ($i = 1; $i <= 23; ++$i) 
{ 
    $word = "abc"; 
    $arrayName = "word_list[" . $i . "]"; 
    if(!in_array($word, $word_list[$i])) 
    { 
    array_push($word_list[$i] , $word); 
    } 
} 
+0

私はOPがこの例を構築したと思いますが、実際には配列の名前はありません(文字列を除く)。おそらく@Kaii。 – Kaii

+1

私は、過剰に設計された解決策を見て嫌いです。シンプルなソリューションが存在する場合は、それを使用するだけではどうですか? –

1

とループのために、あなたはここで配列間違った方法

にアクセスしていることは、その後も、変数に配列名を入れしようとしているのはなぜあなたの修正コード

for ($i = 1; $i <= 23; ++$i) 
{ 
    $word = "abc"; 
    $arrayName = $word_list[$i]; 
    if(!in_array($word, $arrayName)) 
    { 
    array_push($arrayName , $word); 
    $word_list[$i] = $arrayName; 
    } 

} 
+0

複数の要素を配列に追加するにはどうすればいいですか? – vaichidrewar

+1

@vaichidrewar、誤解されていましたが、テストされた解決策で修正されました – Starx

3

あなたが最初の警告を取得し、あなたは文字列にそれを作りました。

だから、代わりに:あなたの最初のパラメータが配列ではありませんので、あなたはあなたの2番目の警告を取得

$arrayName = $word_list[$i]; 

$arrayName = "word_list[" . $i . "]"; 

あなたはこれを持っている必要があります。

ので、代わりの:

array_push($$arrayName , $word); 

あなたはこの必要があります:

$wordlist = array(array("1", "abc"), array("1", "abc"), ...); // repeated 23 times 
:あなたはこれらの変更を行う場合は、最後に次のようになります配列を取得します

array_push($arrayName , $word); 

関連する問題

 関連する問題