2015-12-21 3 views
-2

Я пытаюсь получить все первые объекты из массива, это как мой массив выглядит следующим образом:PHP возвращаемое значение в массиве

Array 
(
    [0] => lorem;1;banana 
    [1] => ipsum;2;apple 
    [2] => dolor;3;grapefruit 
    [3] => sit;4;pineapple; 
    [4] => amet;5;orange 
) 

Я хочу, чтобы вернуть определенное значение, что и хранить его в переменную, так что я могу получить, например, все имена фруктов. Любой способ сделать это?

+0

то, что ваше желание выхода? –

+2

Что вы подразумеваете под «всеми первыми объектами»? в ваших значениях массива нет объектов. Кроме того, будут ли фрукты всегда последней частью строки? Я вижу, что у ананаса есть другой; в конце? Означает ли это, что после фруктов может быть больше струн? – Gordon

ответ

1

Вы можете использовать array_map:

$fruits = array_map(function($item) { 
    $arr = explode(';', $item); 
    return $arr[2]; 
}, $array); 

var_dump($fruits); 
+2

Я думаю, для '[3] => сидеть; 4; ананас;' он вернет пустой –

+1

Я этого не видел .. Я обновил ответ .. спасибо –

1

Предполагая, что плоды всегда приходят в прошлом и может иметь или не иметь завершающую точку с запятой, вы можете использовать

  • preg_replace - Выполнить поиск по регулярному выражению и замену

Пример:

$data = [ 
    'lorem;1;banana', 
    'ipsum;2;apple', 
    'dolor;3;grapefruit', 
    'sit;4;pineapple;', 
    'amet;5;orange' 
]; 

$fruits = preg_replace('#.+;(.+?)[;]*$#', "$1", $data); 

print_r($fruits); 

Шаблон означает соответствие всего и в том числе точки с запятой (жадный), а затем захватить содержание до конца, заканчивающегося с или без запятой.

Выход:

Array 
(
    [0] => banana 
    [1] => apple 
    [2] => grapefruit 
    [3] => pineapple 
    [4] => orange 
) 
0

Вы можете использовать array_walk_recursive функцию и изменить элемент массива в соответствии с требованием. использовать следующий код, который даст вам соответствующий вывод:

$test = array(0 => 'lorem;1;banana', 1 => 'ipsum;2;apple', 2 => 'dolor;3;grapefruit',3 => 'sit;4;pineapple;',4 => 'amet;5;orange'); 

array_walk_recursive($test, 'test'); 
function test(&$item, $key) 
{ 
    $itemArray = explode(';', $item); 
    $item = $itemArray[2]; 
} 
0

Для полноты картины, эти строки могут быть легко разобраны в формате CSV с выходом str_getcsv

$a = array(
    'lorem;1;banana', 
    'ipsum;2;apple', 
    'dolor;3;grapefruit', 
    'sit;4;pineapple;', 
    'amet;5;orange' 
); 

foreach($a as $line){ 
    $csvString = str_getcsv($line,';'); 
    $fruits[] = $csvString[2]; 
} 

print_r($fruits); 

Will

Array 
(
    [0] => banana 
    [1] => apple 
    [2] => grapefruit 
    [3] => pineapple 
    [4] => orange 
) 
Смежные вопросы