根据数组值回显不同的图像

时间:2016-05-01 00:06:09

标签: php arrays

我希望根据是否存在密钥来回显不同的图像。

以下是使用

的数组的示例
["Person"] => array(11) {
    ["id"] => int(38482818123)
    ["weight"] => int(140)
    ["height"] => int(65)
}
["Name"] => array(2) {
    ["firstname"] => string(4) "John"
    ["lastname"] => string(5) "Smith"
}

所以名字字段并不总是存在。如果名称在那里,我需要显示image a,如果没有名称,我需要显示image b

我尝试过的事情:

foreach($personArray as $person)
{
    if ($person['Name'] != '')
    {
        echo "<img src='image-a.png'>";
    }
    else
    {
        echo "<img src='image-b.png'>";
    }
}

现在我遇到的问题是即使这个人有名字,我也会在页面上看到这两个图片,而不仅仅是image a

我也尝试使用array_key_exists("Name", $personArray);,但出于某种原因,我得到了bool(false)

Array

2 个答案:

答案 0 :(得分:3)

首先,似乎你有一个不同的名字数组,我想知道为什么你没有这样的东西:

 ["Person"] => array(11) {
    ["id"] => int(38482818123)
    ["weight"] => int(140)
    ["height"] => int(65)
    ["firstname"] => string(4) "John"
    ["lastname"] => string(5) "Smith"
    }

根据这种情况,可能没有为某些人设置带有“firstname”,“lastname”键的数组索引。因此,您可以使用

检查是否设置了该索引
  

isset()函数;   功能

尝试:

foreach($personArray as $person)
{
    if (isset($person['firstname']) && isset($person['lastname']) ) // You may use or as well ||
    {
        echo "<img src='image-a.png'>";
    }
    else
    {
        echo "<img src='image-b.png'>";
    }


   //  Or as a short hand if statement:

  echo (isset($person['firstname'])&& isset($person['lastname'])) ? "<img src='image-a.png'>" : "<img src='image-b.png'>";
}

修改:1 您似乎仍在使用两个不同的数组:Person和Name。这样做,您无法说出哪个人具有名称值: 例如:如果你有10个人并且姓名数组有名字,姓氏只有7人,那么你将有人[0],人[1] .....人[9]和姓名[0] .. .NAME [6]。 根据您的构造,Person和Name数组之间没有任何引用/链接。假设第一个人有姓名,那么人[0]和姓名[0]将代表同一个人。但是如果前三个人没有Name,那么Person [3]将具有Name [0] ......依此类推,因此,无法识别特定Name数组属于哪个Person。注意:你不能在Person的foreach()中使用Name [“firstname”]。因为,您的名称数组的格式为Name [0] [“firstname”],Name [0] [“lastname”]等等。

底线:

如果可能,尝试使用/包含Person数组本身中的firstname,lastname。这样,当使用foreach()迭代/循环遍历Person数组时,你可以检查这些人是否都有名字,姓氏或名字:希望这是明确的。

答案 1 :(得分:1)

您需要使用cd ~/Some-Random-Project git init ... ,如下所示: -

empty()