каждая проблема обязательна - PullRequest
0 голосов
/ 09 июня 2011

У меня есть следующее содержимое массива:

  Array ( [achternaam] => Jansen [roepnaam] => Theo ) 

Теперь я хочу использовать этот код

 foreach ($values as $r) {
    $achternaam = $r['achternaam'];
    $roepnaam = $r['roepnaam'];      
 }

Когда вы хотите повторить $ achternaam и $ voornaam, значения пусты.Кто-нибудь знает, как связать эти переменные друг с другом.

В результате должны быть $ achternaam = Jansen и $ roepnaam = Theo.

Tnx за помощь!

Ответы [ 5 ]

1 голос
/ 09 июня 2011
$values = array(
    'achternaam' => 'Jansen',
    'roepnaam' => 'Theo'
);

Элементы $values являются строками, а не массивами.Чтобы получить доступ к значениям achternaam и roepnaam, вам необходимо удалить foreach:

$achternaam = $values['achternaam'];
$roepnaam = $values['roepnaam'];

Если положения клавиш achternaam и roepnaam не меняются, вы можете использовать list а также:

list($achternaam, $roepnaam) = $values;

Это только возможно, если ключи в порядке achternaam, roepnaam.Т.е. $values['achternaam'] нужно назначить до $values['roepnaam'].

0 голосов
/ 09 июня 2011

Как насчет одной простой строки кода: extract($values)

http://php.net/manual/en/function.extract.php

0 голосов
/ 09 июня 2011

Похоже, вы неправильно понимаете, как работает foreach. Для каждой итерации цикла ваша переменная $r имеет строковое значение - «Jansen» в первый раз и «Theo» во второй.

Результат, которого вы пытаетесь достичь, можно сделать так:

foreach($values as $k => $r) {
    $$k = $r;
}

Будьте осторожны, откуда берутся ключи массива - поскольку этот код может перезаписать другие важные переменные в вашем скрипте.

0 голосов
/ 09 июня 2011

Используйте вложенный массив, если вы хотите иметь более одного человека:

<?php
$values = array(
  array(
    'achternaam' => 'Jansen',
    'voornaam' => 'Theo',
    'club' => 'Ajax'
  )
);

foreach ($values as $r) {
  $achternaam = $r['achternaam'];
  $roepnaam = $r['roepnaam'];      
  echo $roepnaam . ' ' . $achternaam;      
}

Если вы хотите продолжать использовать этот массив, вы можете сделать это без foreach:

<?php
$values = array(
  'achternaam' => 'Jansen',
  'voornaam' => 'Theo',
  'club' => 'Ajax'
);

$achternaam = $values['achternaam'];
$roepnaam = $values['roepnaam'];      
echo $roepnaam . ' ' . $achternaam;
0 голосов
/ 09 июня 2011

это должно работать:

$values = array('achternaam' => 'Jansen', 'roepnaam' => 'Theo');
list($achternaam, $roepnaam) = $values;

попробуйте хотя бы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...