Прежде всего, объявление вашего массива не является синтаксически допустимым.
Если вы имели в виду, чтобы это было несколько dimensionl массив следующим образом:
$salaries = array(
"a" => array(2000, 1500, 3000, 1950),
"b" => array(1000, 2300, 2233, 2400),
"c" => array(500 , 6590, 1024, 2048)
);
Тогда это может быть сделано с помощью двух петель. В первом цикле прокрутите все подмассивы. Пронумеруйте значения в каждом поддиапазоне, проверьте, является ли это значение вторым или третьим. Если это так, добавьте его в новый массив:
foreach ($salaries as $key => $arr) {
for ($i=0; $i < count($arr); $i++) {
if ($i == 1 || $i == 2) {
$result[$key][] = $arr[$i];
}
}
}
print_r($result);
Demo
Для полноты, я собираюсь добавить решение для случая, когда значения разделенные запятыми строки, а не массивы:
$salaries = array(
"a" => '2000, 1500, 3000, 1950',
"b" => '1000, 2300, 2233, 2400',
"c" => '500 , 6590, 1024, 2048'
);
логика является точно такой же, но вместо того, чтобы доступ к т его внутренние элементы массива напрямую, вам нужно будет использовать explode()
для создания массива значений. Затем используйте array_slice()
, чтобы получить второй и третий элементы, а также создать новый массив из него:
$result = array();
foreach ($salaries as $key => $value) {
$pieces = explode(', ', $value);
$slice[$key] = array_slice($pieces, 1, 2);
$result = array_merge($result, $slice);
}
Demo
Ну это прекрасно работает! Мне было интересно, почему нет прямой команды PHP для этой задачи, и я был бы рад узнать, что я здесь не так. –
Opps ... Извините, я не спросил об этом, как хотел. Результаты должны быть: $ newarray = массив ( "а" => 1500, 3000 "б" => 2300, 2233 "с" => 6590, 1024 ); –
@ user3301364: С удовольствием помогли! –