Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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 - Fatal编程技术网

Php 如何基于内部值元素拆分元素数组?

Php 如何基于内部值元素拆分元素数组?,php,Php,作为输入,具有如下关联数组: $array[0]['id'] = 0; $array[0]['name'] = 'first name'; $array[0]['phone'] = '+1 515 111 111'; $array[0]['for_id'] = 1; $array[1]['id'] = 1; $array[1]['name'] = 'first name1'; $array[1]['phone'] = '+1 515 222 222'; $array[1]['for_id']

作为输入,具有如下关联数组:

$array[0]['id'] = 0;
$array[0]['name'] = 'first name';
$array[0]['phone'] = '+1 515 111 111';
$array[0]['for_id'] = 1;

$array[1]['id'] = 1;
$array[1]['name'] = 'first name1';
$array[1]['phone'] = '+1 515 222 222';
$array[1]['for_id'] = 1;

$array[2]['id'] = 0;
$array[2]['name'] = 'first name2';
$array[2]['phone'] = '+1 515 333 333';
$array[2]['for_id'] = 1;

$array[3]['id'] = 0;
$array[3]['name'] = 'first name3';
$array[3]['phone'] = '+1 515 444 444';
$array[3]['for_id'] = 2;

$array[4]['id'] = 0;
$array[4]['name'] = 'first name4';
$array[4]['phone'] = '+1 515 555 555';
$array[4]['for_id'] = 2;

$array[5]['id'] = 0;
$array[5]['name'] = 'first name5';
$array[5]['phone'] = '+1 515 666 666';
$array[5]['for_id'] = 2;
如何基于相同的
$array[]['for_id']
值将其拆分为N个单独的数组


$array1
将包含
$array
中的所有元素,其中
$array['for_id']==1
$array2
,其中
$array['for_id']==2

只需在数组上迭代,并在新数组中收集每个具有相同for_id的项

$t = array();
foreach ($array as $item) {
    if (!isset($t[$item['for_id']]) {
        $t[$item['for_id']] = array();
    }

    $t[$item['for_id']][] = $item;
}

这里有一种类似于Philipps的方法,但完全是您想要的,即获取变量名称以匹配for_id键值

$array[0]['id'] = 0;
$array[0]['name'] = 'first name';
$array[0]['phone'] = '+1 515 111 111';
$array[0]['for_id'] = 1;

$array[1]['id'] = 1;
$array[1]['name'] = 'first name1';
$array[1]['phone'] = '+1 515 222 222';
$array[1]['for_id'] = 1;

$array[2]['id'] = 0;
$array[2]['name'] = 'first name2';
$array[2]['phone'] = '+1 515 333 333';
$array[2]['for_id'] = 1;

$array[3]['id'] = 0;
$array[3]['name'] = 'first name3';
$array[3]['phone'] = '+1 515 444 444';
$array[3]['for_id'] = 2;

$array[4]['id'] = 0;
$array[4]['name'] = 'first name4';
$array[4]['phone'] = '+1 515 555 555';
$array[4]['for_id'] = 2;

$array[5]['id'] = 0;
$array[5]['name'] = 'first name5';
$array[5]['phone'] = '+1 515 666 666';
$array[5]['for_id'] = 2;



foreach($array as $arr){
    $int = $arr['for_id'];
    $arrName  = 'array' . $int;

    if(!isset($$arrName ))
    {
        $$arrName =array();
    }
    array_push($$arrName, $arr);

}

echo 'First array ' . json_encode($array1);
echo 'Second array ' . json_encode($array2);

我添加的答案只是展示了如何按照starnzd的要求从dataset/($array)中获取$array1和$array2。结果是,在foreach循环运行之后,会出现不受控制的非结构化数组数量,这完全取决于$array的实际值。您可以运行foreach($array1作为$arr)。。。如果这是你要问的。我已经使用json_encode进行了回应,因为它为您提供了一个比var_dump result更易于阅读的结果的json表示,这正是我所需要的