繁体   English   中英

如何将 append 元素以 php 中的特定索引排列

[英]how to append element to array with specific index in php

我是 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++;
}

我会感谢任何可以帮助我的人。

关于语法$myGoal[$index] = [$amount][$friut];

等号之后的部分是创建一个具有单个值$amount的数组,然后尝试使用不存在的$friut值对数组进行索引。

您可以更新语法以使用key => value将数组添加到索引

改变

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

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

Output

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

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

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

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

)

Php 演示

正如@kaczmen指出的那样,如果你只想 append 你不需要索引,你可以使用

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

您可以使用array_chunk使用块大小为 1 来执行此操作。

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

请务必将第三个参数设置为true以保留密钥。


此外,与您的要求没有直接关系,但我想建议使用 amount 作为数组键是有风险的。 如果您有相同数量的两个项目,第二个将覆盖第一个。

首先初始化一个数组,然后将键值存储到一个新数组中。

$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);

希望这可以帮助。

你可以使用array_walk ,如果你想从 0 开始,你不需要声明$index=0 0 您可以只使用$n[]它会自动从0索引开始

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

工作示例:- https://3v4l.org/DTACm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM