Каков наилучший способ переместить элемент массива в начало зависимости другой переменной в качестве значения массива.
например :
$car = 'bmw';
$model = array( '1' => array( 'color' => 'red' ,'model' => 'benz') , '2' =>array('color'=>'black',model'=> 'bmw') );
я хочу переместить ‘2’ => массив (‘color’ => ‘black’, ‘model’ => ‘bmw’) в начале, в зависимости от переменной $ car.
$model = array('2' =>array('color'=>'black','model'=> 'bmw'), '1' => array( 'color' => 'red' , 'model' => 'benz') );
Попробуй это:
Используйте функцию 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);
}
Следующий код поможет вам и сохранит оригинальные ключи:
<?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);