PHP я могу сделать хэш массивов? - PullRequest
1 голос
/ 29 марта 2012

В настоящее время я пытаюсь создать хэш-таблицу массивов следующим образом:

joe
   => 1
   => 2
pete
   => 1
   => 3

Мой PHP-код выглядит следующим образом:

$name = array(); 

while(my condition statement) { 
    if (preg_match("/(.+?)\s*\-\s*(.+?)/", $info)) {                

        list($name, $number) = split('\s*\-\s*', $info);                
        array_push($name,$number);

    }
}

$_SESSION['info'] = $name;

Мой вывод выглядит следующим образом:

[0] => 1 [1] => 2

Почему имя не отображается?

Я знаю в Perl, я всегда делал что-то вроде этого:

while() {
    push @{$hash{$name}}, $number
}

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

правильно укажите индекс:

$array['joe'][] = 1;
$array['joe'][] = 2;
$array['pete'][] = 1;
...

в вашем примере что-то вроде:

$array[$name][] = $number;

, хотя я не получаю ваш код, поскольку вы перезаписываете $ name в цикле while.

1 голос
/ 29 марта 2012
$names = array(); 

// [...]

list($name, $number) = split('\s*\-\s*', $info);
$names[$name][] = $number;
...