【问题标题】:Add element on specific position and move existing one [duplicate]在特定位置添加元素并移动现有元素[重复]
【发布时间】:2013-06-05 17:56:19
【问题描述】:

您好,我有一个键 => 值数组。键是数字索引,值是关联数组。我想在特定位置添加新元素,并希望将现有元素向前移动。我的数组看起来像

Array
(
 [0] => Array
    (
        [States ] => States
        [Call Count] => Call Count
        [Leads] => Leads
    )

 [1] => Array
    (
        [States] => AK
        [Call Count] => 0
        [Leads] => 
    )

 [2] => Array
    (
        [States] => AL
        [Call Count] => 0
        [Leads] => 
    )

 [3] => Array
    (
        [States] => AR
        [Call Count] => 0
        [Leads] => 
    )
)

现在我想插入一个像2=>array('States'=>'ABC','Call Count' =>5, 'Leads'=>2)这样的索引,并希望索引2变成3,3变成4.....当我使用时

 array_slice($outboundSummaryData, 0, 2, true) +
            array('States ' => 'States', 'Call Count' => 'Call Count', 'Leads' => 'Leads') +
            array_slice($outboundSummaryData, 2, count($outboundSummaryData) - 2, true);

它覆盖了我的 2 索引。

当我使用时

array_splice($outboundSummaryData, 2, 0, array('States ' => 'States', 'Call Count' => 'Call Count', 'Leads' => 'Leads'));

它插入我的新数组元素作为数组的主索引。

有什么帮助吗?

【问题讨论】:

  • 你为什么首先使用关联数组?将其作为普通数组将使 array_splice 做你想做的事
  • 你最好使用另一种数据结构:你需要的是列表,而不是数组。
  • 听起来你想要一个排序数组。标准是什么?
  • @FikriMarhan 它是一个数据库结果,所以我必须处理它:-(

标签: php arrays


【解决方案1】:

我使它与array_splice 一起工作。你的数据结构可以保持不变

$test = array(
    array('apple', 'juice'),
    array('ice', 'cream'),
    array('tea', 'pot'),
);

var_dump($test);

array_splice($test, 2, 0, array(2 => array('coffee', 'milk')));

var_dump($test);

相当简单。添加的数组也需要新的索引

【讨论】:

  • +1 为索引提供建议 :-)
【解决方案2】:
$new_array = array_merge( 
   array_slice($outboundSummaryData, 0, 2, true),
   array( 
          array(
                'States' => 'States',
                'Call Count' => 'Call Count', 
                'Leads' => 'Leads'
               ) 
        ),
   array_slice($outboundSummaryData, 2, count($outboundSummaryData) - 2, true)
);

结果:

Array
(
    [0] => 0
    [1] => 1
    [2] => Array
        (
            [States] => States
            [Call Count] => Call Count
            [Leads] => Leads
        )

    [3] => 2
    [4] => 3
)

【讨论】:

    【解决方案3】:

    好吧..你总是可以使用拼接和附加...

    $arr = [0=>"a",1=>"b",2=>"c"];
    $splice_value = 2;
    $spliced_arr = array_splice($arr, $splice_value);
    for($i=$splice_value; $i < count($arr); $i++)
    {
       $spliced_arr[] = $arr[$i];
    }
    

    【讨论】:

      【解决方案4】:

      如果您不介意从关联数组更改为列表

      $outboundSummaryData = array_splice(
           array_values($outboundSummaryData), 
           2, 0, array('States ' => 'States', 'Call Count' => 'Call Count', 'Leads' => 'Leads')
      );
      

      【讨论】:

        猜你喜欢
        • 2017-05-13
        • 1970-01-01
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2013-10-31
        相关资源
        最近更新 更多