Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组\u push添加null而不是整数_Php_Arrays_Array Push - Fatal编程技术网

PHP数组\u push添加null而不是整数

PHP数组\u push添加null而不是整数,php,arrays,array-push,Php,Arrays,Array Push,我有一个数组输出。它应该包含一组元组。我在运行for循环时创建这些元组。(我的代码的简化版本-逻辑相同,但$ind的计算方式更复杂) 和一个示例输出($output): 但我得到(甚至不是空数组): $data[$i]是一个整数。我尝试显式地调用intval(),但仍然没有成功。此外,*array_push()*在执行后不会返回任何内容。没有引发错误或警告。来自PHP文档(): 注意:如果第一个参数不是数组,array_push()将发出警告。这与创建新数组时的$var[]行为不同 调用推送时未

我有一个数组输出。它应该包含一组元组。我在运行for循环时创建这些元组。(我的代码的简化版本-逻辑相同,但$ind的计算方式更复杂)

和一个示例输出($output):

但我得到(甚至不是空数组):

$data[$i]是一个整数。我尝试显式地调用intval(),但仍然没有成功。此外,*array_push()*在执行后不会返回任何内容。没有引发错误或警告。

来自PHP文档():

注意:如果第一个参数不是数组,array_push()将发出警告。这与创建新数组时的$var[]行为不同

调用推送时未初始化数组

使用
$output[$ind][]=$data[$i]

来自PHP文档():

注意:如果第一个参数不是数组,array_push()将发出警告。这与创建新数组时的$var[]行为不同

调用推送时未初始化数组


使用
$output[$ind][]=$data[$i]

在开发时打开错误报告(我建议将其设置为E_ALL),您将看到所有问题。 您正试图将值推送到不存在的数组中—必须检查是否已在要推送的索引处创建了数组,如果不存在,则创建该数组。代码中的另一个问题是,您做了太多的一个循环(应该是
$i<$length
):

$output=Array();
$length=计数($data);
对于($i=0;$i<$length;$i++){
$ind=$i-($i%2);
如果(!isset($output[$ind]))$output[$ind]=array();
数组推送($output[$ind],$data[$i]);
}

在开发时打开错误报告(我建议将其设置为E_ALL),您将看到所有问题。 您正试图将值推送到不存在的数组中—必须检查是否已在要推送的索引处创建了数组,如果不存在,则创建该数组。代码中的另一个问题是,您做了太多的一个循环(应该是
$i<$length
):

$output=Array();
$length=计数($data);
对于($i=0;$i<$length;$i++){
$ind=$i-($i%2);
如果(!isset($output[$ind]))$output[$ind]=array();
数组推送($output[$ind],$data[$i]);
}

$output
使用
array\u push()
时未初始化数组,请尝试以下操作

$data = array(10,2,123,4,34,6);
$output = Array();
$length = count($data);
for ($i = 0; $i < $length; $i++) {
    $ind = $i - ($i % 2);
    //array_push($output[$ind], $data[$i]);

    $output[$ind] = $data[$i];
}
var_dump(array_values($output));

使用
array\u push()
时,
$output
数组未初始化,请尝试以下操作

$data = array(10,2,123,4,34,6);
$output = Array();
$length = count($data);
for ($i = 0; $i < $length; $i++) {
    $ind = $i - ($i % 2);
    //array_push($output[$ind], $data[$i]);

    $output[$ind] = $data[$i];
}
var_dump(array_values($output));

完成相同任务的更简单方法:

$output = array_chunk($data, 2);

完成相同任务的更简单方法:

$output = array_chunk($data, 2);

同意。使用带有PHPs括号快捷方式的push没有用。@Phix
array\u push()
确实有用处,但它的用例在现实世界中很少见(我发现)。函数和括号中的文字推送之间的关键区别在于函数接受两个以上的参数;-)嗯。对于简单的价值观,你自己说的同意。使用带有PHPs括号快捷方式的push没有用。@Phix
array\u push()
确实有用处,但它的用例在现实世界中很少见(我发现)。函数和括号中的文字推送之间的关键区别在于函数接受两个以上的参数;-)嗯。对于简单的价值观,你自己说的是的。原来警告是关闭的。我使用一个不同的循环(每个循环)并从嵌套数组中提取索引。是的。原来警告是关闭的。我使用不同的循环(对于每个循环),并从嵌套数组中提取索引。
$output = Array();
$length = count($data);
for ($i = 0; $i < $length; $i++) {
    $ind = $i - ($i % 2);
    if (!isset($output[$ind])) $output[$ind] = array();
    array_push($output[$ind], $data[$i]);
}
$data = array(10,2,123,4,34,6);
$output = Array();
$length = count($data);
for ($i = 0; $i < $length; $i++) {
    $ind = $i - ($i % 2);
    //array_push($output[$ind], $data[$i]);

    $output[$ind] = $data[$i];
}
var_dump(array_values($output));
array(3) {
  [0] => int(2)
  [1] => int(4)
  [2] => int(6)
}
$output = array_chunk($data, 2);