2011-12-06 164 views
1

如果我有以下代码:Foreach循环+关联数组

$employeeAges; 
$employeeAges["Lisa"] = "28"; 
$employeeAges["Jack"] = "16"; 
$employeeAges["Ryan"] = "35"; 
$employeeAges["Rachel"] = "46"; 
$employeeAges["Grace"] = "34"; 

foreach($employeeAges as $name => $age){ 
    echo "Name: $name, Age: $age <br />"; 
} 

我怎么能输出的具体信息?下面是一个错误的书面例子:

foreach($employeeAges as $name => $age) { 
    $selective = $name["Lisa"]->$age; 
    $secondary = $name["Grace"]->$age; 
    echo "The person you're looking for is $selective years old. And the other one is $secondary years old."; 
} 

正如你所看到的,我想只抓住特定$ key的$值。上面的代码输出以下错误:

Trying to get property of non-object 

有人可以帮助这段代码?不胜感激。

回答

4

如果我理解你的权利,你只是想获得一个特定的人的年龄,只是这样做:

$selective = $employeeAges["Lisa"]; 
$secondary = $employeeAges["Grace"]; 
echo "The person you're looking for is $selective years old. And the other one is $secondary years old."; 

->运算符是用于访问对象的命名成员。请参阅:http://www.php.net/manual/en/language.oop5.basic.php

正如在评论中讨论,通过数组迭代找到一个特定的键,这样做:

foreach ($employeeAges as $name => $age) { 
    if ($name == "Grace") { 
     echo $name . " is " . $age . " years old"; 
     break; 
    } 
} 
+0

+1为链接上' - >' – Jon

+0

尴尬,谢谢!我只是现在试图用for循环而不是每个for循环。当它达到格雷斯并输出她的年龄时,是否有可能做到并断裂? – Sara

+0

当然,但它击败了关联数组的目的。我会通过如何更新我的答案。 – jli

1

所以你要打印出来只年龄?

$employeeAges; 
$employeeAges["Lisa"] = "28"; 
$employeeAges["Jack"] = "16"; 
$employeeAges["Ryan"] = "35"; 
$employeeAges["Rachel"] = "46"; 

$ employeeAges [“Grace”] =“34”;

foreach($employeeAges as $name=>$age) { 
    echo $age; 
} 

使用像这样的foreach循环只是强迫键进入$name和价值为$age,而不必在对象上调用,因此你的错误。

我认为@jli有一个更好的答案适合您的问题,但。

2

我有不同的解释

<?php 
//Assuming this is your array 

$employeeAges["Lisa"] = "28"; 
$employeeAges["Jack"] = "16"; 
$employeeAges["Ryan"] = "35"; 
$employeeAges["Rachel"] = "46"; 
$employeeAges["Grace"] = "34"; 

echo $employeeAges["Lisa"]; //Will output 28 
echo $employeeAges["Jack"]; //Will output 16 
echo $employeeAges["Grace"]; //Will output 34 

你只需要指定你想要的关键问题,它将输出值。