在PHP的foreach循环中将信息存储在数组中

3
如果我有一个像这样的循环,和一个存储信息的数组:
$itemArray = array();
foreach ($a->getDetails() as $b) 
{
    if ($b->getValue1() !== $b->getValue2()) 
    {
        if (!array_key_exists($b->getId(), $itemArray))
        {
            $itemArray[$b->getId()] = array('name' => $b->getName(), 'age' => $b->getAge());
        }

    $personName = $itemArray[$b->getId()]['name'];
    $personAge  = $itemArray[$b->getId()]['age'];

    $content    = ('Name is: ' . $personName . ', age is: ' . $personAge);
    }
}

现在这段代码只输出了一个"person",对于单个的$b值不匹配,我应该如何存储多个值?

我想要的输出效果应该是:

姓名:Dave,年龄:30。

姓名:John,年龄:40。

但目前即使有两个实例都不匹配,也只会输出一个"person"。

$b->getValue1() !== $b->getValue2()
$a->getDetails()的示例输出:
array(1) {
[0]=>
  object(PersonDetail)#322 (41) {
["collItemTemplateFieldPersonValues":protected]=>
NULL
["id":protected]=>
int(2375434)
["person_id":protected]=>
int(2184229)
["person_details_id":protected]=>
int(4563874)
["person_details_type_id":protected]=>
NULL
["name":protected]=>
string(4) "Test"
["person_namecode":protected]=>
string(9) "PERSON_ID"
["person_age":protected]=>
int(30)

你能粘贴"$a->getDetails()"输入吗? - Deepak Mankotia
你能同时发布所有的对象吗? - mitkosoft
我发布了一个小样本 $a->getDetails()。 - Sudoscience
1个回答

1

你已经将所有需要的内容存储在数组中,现在只需要循环即可 :)

$itemArray = array();
foreach ($a->getDetails() as $b) {
    if ($b->getValue1() !== $b->getValue2()) {
        if (!array_key_exists($b->getId(), $itemArray)) {
            $itemArray[$b->getId()] = array('name' => $b->getName(), 'age' => $b->getAge());
        }
    }
}
if (count($itemArray) > 0) {
    foreach($itemArray as $item) {
        $personName = $item['name'];
        $personAge  = $item['age'] ;
        $content    = ('Name is: ' . $personName . ', age is: ' . $personAge);
    }
}

这很有道理,谢谢!如果我想要在PHP中使用数组输出发送一封包含所有数据的单个电子邮件,我该如何创建一个变量来保存所有数据? - Sudoscience
@Sudoscience,您需要提出一个新问题,我们必须保持SO的清洁:),如果您接受此答案,您必须检查它并选择性地点赞...请分享您问题的链接,我会帮助您。 - Halayem Anis
完成!这是新的问题链接:http://stackoverflow.com/questions/35650419/grab-data-from-array-and-combine-to-send-email-using-php - Sudoscience

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接