如何根据另一个变量将数组元素移动到数组的开头

时间:2016-06-02 06:54:56

标签: php arrays element move

将数组元素移动到另一个变量作为数组值的最佳方法是什么? 例如:

$car = 'bmw';
$model = array( '1' => array( 'color' => 'red' ,'model' => 'benz') , '2' =>array('color'=>'black',model'=> 'bmw') );

我想移动' 2' =>数组('颜色' =>'黑''型号' =>' bmw')在开始时取决于$汽车变量。

$model = array('2' =>array('color'=>'black','model'=> 'bmw'), '1' => array( 'color' => 'red' , 'model' => 'benz') );

2 个答案:

答案 0 :(得分:0)

试试这个:

使用array_unshift()函数将任何索引移位到数组中的第一个

$car = 'bmw';
$model = array( '1' => 'benz' , '2' => 'bmw' , '3' => 'audi');
$key = array_search($car, $model);
if ($key > 0) {
   unset($model[$key]);
   array_unshift($model, $car);
}

答案 1 :(得分:0)

以下代码将执行此操作并保留原始密钥:

<?php

$car = 'bmw';
$models = array('1' => array('color' => 'red', 'model' => 'benz'), '2' => array('color' => 'black', 'model' => 'bmw'), '3' => array('color' => 'green', 'model' => 'audi'));

foreach (array_values($models) as $key => $model) {
  if ($model['model'] == $car) {
    $index = $key;
    break;
  }
}

$models = array_slice($models, $index, 1, true) + array_slice($models, 0, $index, true) + array_slice($models, $index + 1, count($models), true);

var_dump($models);