У меня есть два массива, которые генерируются в двух циклах foreach, и я хочу установить первый массив как ключи, а второй - как значения.
после того, как я использую этот код
foreach ($difference AS $j) {
$fv = $cate->getFilterValueByFeatureID($j);
foreach ($fv AS $z) {
$array = array(
$j => $z
);
var_dump($array);
}
}
это то, что я получаю
array(1) {
[6]=>
int(15)
}
array(1) {
[6]=>
int(20)
}
array(1) {
[8]=>
int(26)
}
array(1) {
[8]=>
int(27)
}
array(1) {
[8]=>
int(33)
}
и я хочу этот результат
array(1){
[6] => array(
[0] => 15
[1] => 20
)
array(1){
[8] => array(
[0] => 26
[1] => 27
[2] => 33
)






Вот так (не проверено)
$result = [];
foreach ($difference AS $j) {
$fv = $cate->getFilterValueByFeatureID($j);
foreach ($fv AS $z) {
if (!isset($result[$j])) $result[$j] = [];
$result[$j][] = $z;
}
}
var_dump($result);
Вы можете удалить эту строку if (!isset($result[$j])) $result[$j] = [];. Если $j не установлен, PHP автоматически создаст пустой массив
@ArtisticPhoenix спасибо, это сработало, но я не получил всех преимуществ, но после того, как я сделал то, что сказал Дуиндер, все сработало отлично.
Просто нужно изменить на $array[$j][] = $z; (говоря, что $j является ключом, и этот ключ указывает на массив, если вы хотите добавить новый элемент массива, который равен $z).