Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 在数组中创建数组而不首先创建键_Php_Arrays - Fatal编程技术网

Php 在数组中创建数组而不首先创建键

Php 在数组中创建数组而不首先创建键,php,arrays,Php,Arrays,这就是我在循环数据时创建数组中不存在的键的方式: $array = []; foreach ($results as $result) { if (!isset($array[$result->id])) { $array[$result->id] = []; } $array[$result->id][] = $result->value; } 工作中的同事会做以下事情。PHP没有错误,但我不确定这是PHP的一个功能还是不正

这就是我在循环数据时创建数组中不存在的键的方式:

$array = [];
foreach ($results as $result) {

    if (!isset($array[$result->id])) {
        $array[$result->id] = [];
    }

    $array[$result->id][] = $result->value;
}
工作中的同事会做以下事情。PHP没有错误,但我不确定这是PHP的一个功能还是不正确:

$array = [];
foreach ($results as $result) {
    $array[$result->id][] = $result->value;
}

我这样做不正确吗?

如果您在代码中添加的条件是不必要的。让我解释一下

if (!isset($array[$result->id])) {
    $array[$result->id] = [];
}

这意味着如果
$array[$result->id]
不存在,则将其定义为数组,但是
$array[$result->id][/code>如果不存在,则会自动创建新数组,而不会引发任何错误。所以不需要使用if条件错误。总之,这两个代码都是正确的,只是您使用的是不必要的if条件。

如果您在代码中输入的条件是不必要的。让我解释一下

if (!isset($array[$result->id])) {
    $array[$result->id] = [];
}

这意味着如果
$array[$result->id]
不存在,则将其定义为数组,但是
$array[$result->id][/code>如果不存在,则会自动创建新数组,而不会引发任何错误。所以不需要使用if条件错误。总之,这两个代码都是正确的,只是您使用了不必要的if条件。

太好了!非常感谢。这是一个有文档记录的PHP特性吗?没有明显的风险,有一天它可能会被删除?@BenSinclair我在PHP数组文档中找不到任何提到它的地方。但是它在创建中间数组时甚至没有打印警告,所以我认为它是可以工作的。但为了清楚起见,我更喜欢你的第一个版本。@Barmar我确实找到了,但没有明确说明我的例子是正确的。但是看起来这是可能的,而且不会出错。@BenSinclair我想这就是答案,它确实说明你的例子是正确的。关键是要理解它
$arr
在示例中,它代表表示可以将数组分配给的对象的任何表达式,因此它适用于多个级别的数组。但请注意,它也说,这是令人沮丧的。太好了!非常感谢。这是一个有文档记录的PHP特性吗?没有明显的风险,有一天它可能会被删除?@BenSinclair我在PHP数组文档中找不到任何提到它的地方。但是它在创建中间数组时甚至没有打印警告,所以我认为它是可以工作的。但为了清楚起见,我更喜欢你的第一个版本。@Barmar我确实找到了,但没有明确说明我的例子是正确的。但是看起来这是可能的,而且不会出错。@BenSinclair我想这就是答案,它确实说明你的例子是正确的。关键是要理解它
$arr
在示例中,它代表表示可以将数组分配给的对象的任何表达式,因此它适用于多个级别的数组。但请注意,它也表示这是令人沮丧的。