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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Json - Fatal编程技术网

Php 函数正在将数组从数字更改为关联

Php 函数正在将数组从数字更改为关联,php,arrays,json,Php,Arrays,Json,这应该是采取任何重复ing_name的行,合并eff_name字段并删除重复项,但也有将数组从数字更改为关联的副作用。我的ajax需要数字数组 for($i=count($recipe)-1; $i>0; $i--) { if($recipe[$i]['ing_name'] == $recipe[$i-1]['ing_name']) { //check for duplicate. **array must be sorted by ing_name** $reci

这应该是采取任何重复
ing_name
的行,合并
eff_name
字段并删除重复项,但也有将数组从数字更改为关联的副作用。我的ajax需要数字数组

for($i=count($recipe)-1; $i>0; $i--) {
    if($recipe[$i]['ing_name'] == $recipe[$i-1]['ing_name']) { //check for duplicate. **array must be sorted by ing_name**
        $recipe[$i-1]['eff_name'] .= ', '.$recipe[$i]['eff_name']; //Combine eff_name of duplicates
        $recipe[$i-1]['link'] = true;
        unset($recipe[$i]); //remove duplicate index
    }
}
例如:

编辑:所以我认为这一定与取消索引有关,所以我这样做了,看起来效果不错:

$newRecipe = array();
foreach($recipe as $r) {
    $newRecipe[] = $r;
}

新问题,有更好的方法吗?

unset
使用命名键。您可以改为使用,或者在使用循环后获得一个全新的数组(但那会很难看!)。

将返回一个数字索引数组

无需担心,数组拼接将我引导到我最终使用的数组切片,因为我一次只需要删除一个索引。谢谢因为您正在创建一个新数组,在破坏了原始数组的形状之后。如果在循环中使用
array\u-splice
而不是
unset
,则不需要像原始代码那样创建新数组。