как добавить элемент в массив с определенным индексом в php - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в php.Я пытаюсь получить ключ и значение каждого элемента в специальном массиве.Я хочу сохранить / вставить их в другой массив, начиная с нулевого индекса.Конечно, цикл foreach - лучший инструмент здесь.Пожалуйста, помогите мне своим кодом.Я знаю, что описать эту проблему довольно сложно, поэтому у меня есть несколько рисунков для вас.

$info = array(
    <--key-->     <--value--> 
    [10] => 'apple',
    [8] => 'orange',
    [2] => 'banana',
    [23] => 'peach',
)

now I want to have an array like this:

$myGoal = array(
  <-key->   <--------value---------> 
    [0] => array('10'=>'apple'),
    [1] => array('8'=>'orange'),
    [2] => array('2'=>'banana'),
    [3] => array('23'=>'peach')
)

Полагаю, код, который мне нужен, должен выглядеть примерно так:

$info = array(
    [10] => 'apple',
    [8] => 'orange',
    [2] => 'banana',
    [23] => 'peach',
)

$index = 0;
$myGoal = array();
foreach($info as $amount => $friut){
     $myGoal[$index] = [$amount][$friut];
     $index++;
}

I 'Я буду благодарен всем, кто сможет мне помочь.

Ответы [ 4 ]

2 голосов
/ 25 сентября 2019

О синтаксисе $myGoal[$index] = [$amount][$friut];

Часть после знака равенства создает массив с единственным значением $amount, а затем пытается проиндексировать массив со значением $friut, что делаетне существует.

Вы можете обновить синтаксис для добавления массива в индекс с помощью key => value

Изменить

$myGoal[$index] = [$amount][$friut];

на

$myGoal[$index] = [$amount => $friut];

Вывод

Array
(
    [0] => Array
        (
            [10] => apple
        )

    [1] => Array
        (
            [8] => orange
        )

    [2] => Array
        (
            [2] => banana
        )

    [3] => Array
        (
            [23] => peach
        )

)

Php demo

Как @ kaczmen , если вы хотите только добавить, вам не нужен индекси вы могли бы использовать

$myGoal[] = [$amount => $friut];
0 голосов
/ 25 сентября 2019

Вы можете использовать array_walk, вам не нужно объявлять $index=0, если вы хотите запустить его с 0.Вы можете просто использовать $n[], он будет автоматически запускаться с 0 index

 array_walk($info,function($v,$k)use(&$n){$n[]=[$k=>$v];});
 print_r($n);

Рабочий пример: - https://3v4l.org/DTACm

0 голосов
/ 25 сентября 2019

Сначала вы инициализируете массив, после чего сохраняете значение ключа в новом массиве.

$info = array("10" => 'apple',"8" => 'orange',"2" => 'banana',"23" => 'peach');
$new=array();
foreach($info as $key=>$info1)
{
    $new[] = [$key=>$info1];
}
echo "<pre>";
print_r($new);

Надеюсь, это поможет.

0 голосов
/ 25 сентября 2019

Вы можете сделать это с помощью array_chunk, используя размер фрагмента 1.

$myGoal = array_chunk($info, 1, true);

Обязательно установите третий аргумент на true, чтобы сохранить ключи.


Кроме того, не имеет прямого отношения к тому, что вы спрашиваете, но я хотел бы предложить, что использование количества в качестве ключа массива рискованно.Если у вас когда-либо будет одинаковое количество двух предметов, второе заменит первое.

...