Возможно ли array_chunk
на основе значения в массиве?
массив
Array ( [4f5hfgb] => Array ( [0] => ACME [1] => 4f5hfgb [2] => Aberdeen ) [sdf4ws] => Array ( [0] => ACME [1] => sdf4ws [2] => Birmingham ) [dfgdfg54] => Array ( [0] => EDNON [1] => dfgdfg54 [2] => Birmingham ) [345bfg] => Array ( [0] => EDNON [1] => 345bfg [2] => Birmingham ) [345fgfd] => Array ( [0] => VALVE [1] => 345fgfd [2] => Birmingham ) )
Можно ли вырезать те, у которых одинаковое значение в [0]
?
Желаемый выход
Array ( [4f5hfgb] => Array ( [0] => ACME [1] => 4f5hfgb [2] => Aberdeen ) [sdf4ws] => Array ( [0] => ACME [1] => sdf4ws [2] => Birmingham ) ) Array ( [dfgdfg54] => Array ( [0] => EDNON [1] => dfgdfg54 [2] => Birmingham ) [345bfg] => Array ( [0] => EDNON [1] => 345bfg [2] => Birmingham ) ) Array ( [345fgfd] => Array ( [0] => VALVE [1] => 345fgfd [2] => Birmingham ) )
Если я понимаю ваш вопрос, вы пытаетесь сгруппировать все элементы, которые имеют одинаковое значение для ключа 0
в том же массиве. Вы не можете сделать это с помощью array_chunk
но цикл ниже создает сгруппированный массив
$result = array(); foreach($arr as $k => $v) { $result[$v[0]][$k] = $v; } print_r($result);
Попробуй это:
$values = array_unique(array_map( function ($v) { return $v[0]; }, $array )); $result = array(); foreach ($values as $val) { $result[] = array_filter($array, function ($v) use ($val) { return $v[0] == $val; }); }
Нет. array_chunk
разбивает массив на куски по размеру. Вы можете подумать о переходе в массив и поместить его в желаемую структуру.