2012-06-12 5 views
3

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

$names = array('joe', 'piter', 'jack'); 
$dates = array('06/22/1987', '05/25/1988', '08/26/1990'); 
$arr = array(); 
foreach($names as $v){ 
    $arr[] = $v; 
} 
$arr2 = array($arr => $dates); 
print_r($arr2); 

Как это сделать?

Thnaks ребята.

+0

Какой будет желаемый результат в этом случае? – Niko

+3

Я думаю, вы можете искать [array_combine] (http://www.php.net/manual/en/function.array-combine.php). Он принимает 2 массива и создает новый массив с ключами из одного массива и значениями из другого. – drew010

ответ

6

Для этого не требуется петля foreach. Просто используйте array_combine:

$names = array('joe', 'piter', 'jack'); 
$dates = array('06/22/1987', '05/25/1988', '08/26/1990'); 
$arr2 = array_combine($names, $dates); 

print_r($arr2) Выходы:

 
Array 
(
    [joe] => 06/22/1987 
    [piter] => 05/25/1988 
    [jack] => 08/26/1990 
) 

В этой ситуации вам не нужно делать это, но если вы хотите знать, как использовать $v в качестве ключа для $arr2 в вашем петли вы можете просто выполнить задание в цикле:

$arr2[$v] = ...; 
+0

Но если я хочу, чтобы каждый ключ был массивом, как мне это сделать? – thegrede

+2

@thegrede Вы не можете использовать 'массивы' для ключей. Ключ должен быть строкой или целым числом. См. Здесь: http://php.net/manual/en/language.types.array.php. Если вы действительно хотите, вы можете преобразовать массив в строку с 'serialize', а затем использовать ее как ключ, но я настоятельно рекомендую против этого. – Paulpro

+1

@ ascii-lime Существует способ использования объектов в качестве ключа массива путем расширения объекта ArrayObject и переопределения метода OffsetSet, путем реализации ArratAccess и реализации собственного метода OffsetSet, а также я помню, что это возможно с интерфейсами SplObserver/SplSubject. –

2

Ну, увидел @ ответ ASCii-известковые (который намного лучше) после того, как я напечатал это, но только как Alte я думаю ...

$names = array('joe', 'piter', 'jack'); 
$dates = array('06/22/1987', '05/25/1988', '08/26/1990'); 
$arr = array(); 
$i=0; 
foreach($names as $v){ 
    $arr[$v] = $dates[$i]; 
    ++$i; 
} 
print_r($arr);