2013-11-07 5 views
0

У меня есть массив с именем $matches ниже вы можете увидетьКак использовать foreach Key -> Value - PHP?

Результатprint_r(array_filter($matches));

Array ( 
[0] => Array ( 
    [0] => Age: 
    [1] => 22 Years 
    [2] => Ethnicity: 
    [3] => Caucasian 
    [4] => Location: 
    [5] => London, United Kingdom 

и Результатvar_dump($matches);

array(1) { 
[0]=> array(66) { 
    [0]=> string(202) " Age: " 
    [1]=> string(157) " 22 Years " 
    [2]=> string(196) " Ethnicity: " 
    [3]=> string(146) " Caucasian " 
    [4]=> string(195) " Location: " 
    [5]=> string(175) " London, United Kingdom " 

Так вот структура здесь является ключевым - > Значение, ключ -> Значение, ..

Как вы заметили, все ключи (Value мена) заканчивается с :

Результатом я хочу:

echo $age;   // Should result: 22 Years 
echo $ethnicity; // Should result: Caucasian 
echo $location; // Should result: London, United Kingdom 

Как Foreach массив номера 0,2,4 в качестве имен значений?

И горячий, чтобы установить номер массива 1,2,5 в качестве результата?

+5

Этот вопрос не по теме, потому что она спрашивает о ** возможности ** и ** не конкретный вопрос кодирования **. Если вы хотите узнать, возможно ли что-то, вы должны ** изучить его ** и ** попытаться реализовать его **. Если у вас есть проблемы при этом, вы можете задать ** конкретный ** вопрос, ** показывая код, который вы написали **, ваши ожидаемые результаты и ваши фактические результаты. –

+2

Является ли каждый массив в том же порядке? – Fluffeh

+0

@Fluffeh: Да, массив всегда в одном порядке, но если пользователь не установил Age: тогда строка [0] покажет ** Этничность: ** и [1] покажут ** Caucasian ** – Cyborg

ответ

1

, если вы действительно хотите просто переназначить и все будет чередоваться, попробуйте:

function remap_alternating(array $values) { 
    $remapped = array(); 
    for($i = 0; $i < count($values) - 1; $i += 2) { 
     $remapped[trim($values[$i], ": ")] = trim($values[$i + 1], " "); 
    } 
    return $remapped; 
} 

Затем вы можете использовать

$mapped = remap_alternating($matches[0]); 

foreach($mapped as $key => $val) { 
    echo "<p>$key = $val</p>"; 
} 

Я поставил $ соответствует этому:

$matches = array(
    array (" Age: ", " 22 Years ", " Ethnicity: ", " Caucasian ", " Location: ", " London, United Kingdom ") 
); 

и его отпечатки:

Возраст = 22 лет

Этнос = Кавказский

Местонахождение = London, United Kingdom

+0

Спасибо, я пробовал ваш код, но, к сожалению, не смог заставить его работать :(Я получил это ** ОШИБКА **: 'Предупреждение: substr() ожидает, что параметр 1 будет строкой, array' – Cyborg

+0

, что является нечетным, потому что я не использовал' substr() ' – ohmusama

+0

взгляните на это, когда я вернусь домой. – ohmusama

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