2014-02-15 4 views
-1

Мне нужно захватить данные внутри массива (внутри массива), который будет захватывать только вторую и третью строки каждой строки.Захватить часть массива (внутри массива) PHP

<?php 

$salaries = array(
    //I WANT TO MAKE A NEW ARRAY FROM ALL THE SECOND AND THE THIRD ROWS 
       "a" => 2000, 1500, 3000, 1950 
       "b" => 1000, 2300, 2233, 2400 
       "c" => 500 , 6590, 1024, 2048 
    //FOR EXAMPLE RESULTS IN THIS CASE WOULD BE : 
    //$newarray = array(1500,3000,2300,2233,6590,2048); 
    ); 

?> 

Если нет прямой команды для этого не петли было бы хорошо :)

Спасибо!

ответ

2

Прежде всего, объявление вашего массива не является синтаксически допустимым.

Если вы имели в виду, чтобы это было несколько 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

+0

Ну это прекрасно работает! Мне было интересно, почему нет прямой команды PHP для этой задачи, и я был бы рад узнать, что я здесь не так. –

+0

Opps ... Извините, я не спросил об этом, как хотел. Результаты должны быть: $ newarray = массив ( "а" => 1500, 3000 "б" => 2300, 2233 "с" => 6590, 1024 ); –

+0

@ user3301364: С удовольствием помогли! –

Смежные вопросы