У меня есть 2 массива, как показано ниже.
$keys = [1,2,3,4-1,99,1,2,3,4-1,4-2,4-3,99,1,2,3,4-1,4-2,99] $values = [a,b,c,d,x,a1,b1,c1,d1,e,g,x,a2,b2,c2,d2,e,x]
Я хочу объединить в массив вроде:
$result = array( [0]=>array(1=>a,2=>b,3=>c,4-1=>d,99=>x), [1]=>array(1=>a1,2=>b1,3=>c1,4-1=>d1,4-2=>e,4-3=>g,99=>x), [2]=>array(1=>a2,2=>b2,3=>c2,4-1=>d2,4-2=>e,99=>x );
Правило прерывается в любое время $ key = 99. В настоящее время я попытался использовать array_chunk, но синтаксис только позволяет мне блокировать массив по количеству уникальных ключей, что в моем примере не является постоянным. Любой совет?
Вам нужно написать собственный скрипт, который объединяет эти два массива по вашей логике.
Вам нужно получить каждый ключ из массива $keys
и объединить его с одним и тем же элементом по позиции из массива $values
.
Пример:
<?php $keys = ['1', '2', '3', '4-1', '99', '1', '2', '3', '4-1', '4-2', '4-3', '99', '1', '2', '3', '4-1', '4-2', '99']; $values = ['a', 'b', 'c', 'd', 'x', 'a1', 'b1', 'c1', 'd1', 'e', 'g', 'x', 'a2', 'b2', 'c2', 'd2', 'e', 'x']; $i = 0; $result = []; foreach ($keys as $index => $key) { if (empty($result[$i])) $result[$i] = [$key => $values[$index]]; else $result[$i][$key] = $values[$index]; if ($key == 99) ++$i; } print_r($result);
Вы можете использовать цикл foreach для достижения этого
$keys = ["1","2","3","4-1","99","1","2","3","4-1","4-2","4-3","99","1","2","3","4-1","4-2","99"]; $values = ["a","b","c","d","x","a1","b1","c1","d1","e","g","x","a2","b2","c2","d2","e","x"]; $new_array = array(); $split_at = "99"; $i = 0; foreach ($keys as $key => $value) { $new_array[$i][$value] =$values[$key]; if($split_at == $value){ $i++; } } print_r($new_array);
DEMO