我正在尝试动态创建数组,然后通过使用变量构造数组名称来填充它们,但我收到以下警告
警告:in_array()期望参数2为数组,给定为null 警告:array_push()期望参数1为数组,给定
为null对于单个数组,此方法有效,但对于数组数组,这不起作用。该怎么做?
<?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 :(得分:5)
为什么甚至试图将数组名称放在变量中然后取消引用该名称?为什么不这样做:
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);
}
}
答案 1 :(得分:3)
您收到第一个警告,因为您的$arrayName
变量实际上不是数组,而是将其变为字符串。
所以而不是:
$arrayName = "word_list[" . $i . "]";
你应该有这个:
$arrayName = $word_list[$i];
您收到第二个警告,因为您的第一个参数不是数组。
所以而不是:
array_push($$arrayName , $word);
你应该有这个:
array_push($arrayName , $word);
如果进行这些更改,最终会得到一个如下所示的数组:
$wordlist = array( array("1", "abc"), array("1", "abc"), ... ); // repeated 23 times
答案 2 :(得分:1)
在for循环中,你以错误的方式访问数组
这是您更正后的代码
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;
}
}