Как переместить элемент массива в начало массива в зависимости от другой переменной

Каков наилучший способ переместить элемент массива в начало зависимости другой переменной в качестве значения массива.
например :

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

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);
}
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);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector