【问题标题】:how to show a specific item of an array如何显示数组的特定项
【发布时间】:2014-08-10 23:24:04
【问题描述】:

我有一个这样的数组:

Array
(
    [47] => Array
        (
            [name1] => 
        )

    [43] => Array
        (
            [name2] => 
        )

    [53] => Array
        (
            [name3] => selected
        )

    [50] => Array
        (
            [name4] => 
        )

    [51] => Array
        (
            [name5] => 
        )

    [37] => Array
        (
            [name6] => 
        )

)

我想显示 name1、name2、name3、name4、name5、name6 的值。 我试过了:

for($i = 0; $i < 6; $i++){
    echo $array_object[$i] . "<br/>";
}

但它不起作用。 我该如何解决?谢谢!

【问题讨论】:

  • 你试过foreach吗?
  • 1)。您在数组中有一个数组。 2)。您的指数不是 0-6。

标签: php arrays


【解决方案1】:

您可以使用array_keys 函数获取索引,然后以数字方式使用它们:

$keys=array_keys($array_object);
for($i = 0; $i < 6; $i++){
    echo $array_object[$keys[$i]][{'name'.($i+1)}]."<br/>";
}

这将允许您使用索引 [0],即使它根据问题中的示例数据引用索引 [47]。

虽然我没有费心检查您的数据是否始终包含至少 6 个条目(再次基于您发布的示例代码),但如果您的循环超过数组中的条目数,您将收到未定义索引错误除非你先检查一下。

【讨论】:

    【解决方案2】:

    如果您的数组未排序,则需要创建一个(非常长且糟糕的)循环。

    foreach($array_object as $subArray){
       foreach ($subArray as $elem){
          echo ($elem);
       }
    }
    

    请考虑简化您的数组,因为有大量数据,它会很长。

    【讨论】:

      【解决方案3】:
      foreach ($array_object AS $entry) {
          foreach($entry AS $key=>$val) {
              echo $val.'<br />';
          }
      }
      

      【讨论】:

        【解决方案4】:

        尝试array_values 很简单:

        $array_object= array_values($array_object);
        
        for($i = 0; $i < count($array_object); $i++)
        {
            echo $array_object[$i]['name']."<br/>";
        }
        

        【讨论】:

          【解决方案5】:

          使用以下示例之一:

          foreach($elements AS $element) {
              foreach($element AS $key=>$value) {
                  if(!preg_match('/^name[0-9]+/s', $key)) // match "nameNUM" style text
                      continue;
                  echo $value.'<br/>';
              }
          }
          

          foreach($elements AS $element) {
              for($i=1; $i<=6; $i++) {
                  if(!isset($element['name'.$i])) 
                      continue;
                  echo $value.'<br/>';
              }
          }
          

          $accepted_values = array('name1','name2','name3','name4','name5','name6');
          foreach($elements AS $element) {
              foreach($element AS $key=>$value) {
                  if(!in_array($key, $accepted_values)) 
                      continue;
                  echo $value.'<br/>';
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2015-09-22
            • 2016-07-07
            • 1970-01-01
            • 2018-01-14
            • 1970-01-01
            • 1970-01-01
            • 2023-02-04
            • 2020-02-15
            • 1970-01-01
            相关资源
            最近更新 更多