【问题标题】:how to append element to array with specific index in php如何在php中将元素附加到具有特定索引的数组
【发布时间】:2019-09-24 22:53:03
【问题描述】:

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

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

【问题讨论】:

    标签: php arrays indexing push


    【解决方案1】:

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

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

    您可以更新语法以使用 key =&gt; 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];
    

    【讨论】:

    • 如果你只关心追加,你也可以删除 $index 变量并将其改为 $myGoal[] = ...
    【解决方案2】:

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

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

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


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

    【讨论】:

    • 你的想法是最短的方法,结果还可以,tnx
    【解决方案3】:

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多