【问题标题】:Pulling data from Multidimensional Arrays从多维数组中提取数据
【发布时间】:2018-01-26 00:32:08
【问题描述】:

我正在尝试从 PHP 多维数组中提取特定数据。

数组是这样的:

Array
(
    [0] => Array
        (
            [0] => Item Code Number
            [1] => Item Name
            [2] => Item Description
            [3] => MSRP
            [4] => Cost
            [5] => Weight Pounds
            [6] => Weight Kgs
            [7] => Category 1
            [8] => Category 2
            [9] => Category 3
            [10] => Category 4
            [11] => Youtube Link
            [12] => Large Image URL
        )

    [1] => Array
        (
            [0] => 1
            [1] => Amazing Magic Set
            [2] => Easy to learn magic tricks
            [3] => 24.95
            [4] => 10.5
            [5] => 0.95
            [6] => 0.43
            [7] => New Items
            [8] => Tricks
            [9] => *New Tricks*
            [10] => All Tricks
            [11] => blank
            [12] => http://www.magicmakersinc.com/images/product/large/0051.jpg
        )
)

我想要做的是遍历数组并从每个条目中提取键 0、1、2、4、6 并显示该数据。

这是我尝试使用的:

$keys = (array_keys($csv));             
for ($row = 0; $row < sizeof($csv); $row++) {
    echo "<tr>";
        foreach($keys[$row] as $key => $value) {
            echo "<td>".$value."</td>";
        }
        echo "</tr>";
}

我无法让它显示任何内容。

我也试过了:

for($i = 0; $i < count($csv); $i++) {
    echo "<tr>";
    foreach($csv[$keys[$i]] as $key => $value) {
        echo "<td>".$value(0)."</td>";
    }
    echo "</tr>";
}

我不知道我做错了什么。任何帮助都会很棒。

【问题讨论】:

    标签: php


    【解决方案1】:

    试试

    for ($row = 0; $row < sizeof($csv); $row++) {
    echo "<tr>";
        foreach($csv[$row] as $key => $value) {
            if($k == '0' || $k == '1' || $k == '2' || $k == '4' || $k == '6'){
                echo "<td>".$value."</td>";
            }
        }
        echo "</tr>";
    }
    

    【讨论】:

    • 还要为未来提供建议 - 不要将多维数组用于这样的目的 - 因为它们应该仅用于可以用多维数组识别性质的数据(例如矩阵计算)。对于这样的用法 - 使用对象。
    【解决方案2】:

    试试这个代码:

    foreach ($row ar $val) {
        echo "<tr>";
            foreach($val as $k => $v) {
                if($k == '0' || $k == '1' || $k == '2' || $k == '4' || $k == '6'){
                    echo "<td>".$td."</td>";
                }
            }
        echo "</tr>";
    }
    

    【讨论】:

    • 做或不做,没有“尝试”。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,而且是为了未来的 SO 访问者。 去修正你说“试试这个”的每一个答案,而没有任何解释做了什么。今天就去做。
    【解决方案3】:

    使用两个foreach

    foreach ($row ar $tr) {
        echo "<tr>";
            foreach($tr as $td) {
                echo "<td>".$td."</td>";
            }
        echo "</tr>";
    }
    

    【讨论】:

    • 如果需要特定的键,请将if 添加到第二个foreach,例如:if(in_array($tr, [0, 1, 2, 4, 6])) echo ...
    • 使用 if in_array 比使用巨大的 OR 块要干净得多 :)
    【解决方案4】:

    假设=有

    $myArray = Array(
            [0] => Array
                (
                    [0] => Item Code Number
                    [1] => Item Name
                    [2] => Item Description
                    [3] => MSRP
                    [4] => Cost
                    [5] => Weight Pounds
                    [6] => Weight Kgs
                    [7] => Category 1
                    [8] => Category 2
                    [9] => Category 3
                    [10] => Category 4
                    [11] => Youtube Link
                    [12] => Large Image URL
                )
    
            [1] => Array
                (
                    [0] => 1
                    [1] => Amazing Magic Set
                    [2] => Easy to learn magic tricks
                    [3] => 24.95
                    [4] => 10.5
                    [5] => 0.95
                    [6] => 0.43
                    [7] => New Items
                    [8] => Tricks
                    [9] => *New Tricks*
                    [10] => All Tricks
                    [11] => blank
                    [12] => http://www.magicmakersinc.com/images/product/large/0051.jpg
                )
        )
    

    你可以使用几个 foreach 来查看内容

      foreach($myArray as $key1 => $value1){
    
        foreach( $value1 as $key2 => $value2 ){
          echo  $key1 .  ' ' $key2 .'  value ' .$value2
        }
    
      }
    

    或用于特定访问 0、1、2、4、6

      foreach($myArray as $key1 => $value1){
    
          echo  $key1 .  ' ' . $value1[0]  . '</br>';
          echo  $key1 .  ' ' . $value1[1]  . '</br>';
    
          echo  $key1 .  ' ' . $value1[2]  . '</br>';
          echo  $key1 .  ' ' . $value1[4]  . '</br>';
    
          echo  $key1 .  ' ' . $value1[6]  . '</br>';
    
    
        }
    
      }
    

    【讨论】:

    • 这具体在哪里显示单元格 0、1、2、4、6?
    • 这个输出:0 I 0 t 0 e 0 0 o 我不知道为什么。
    • 可能是您的数组与示例中的不同
    【解决方案5】:

    一些不同的方法,将数组组合在一起第一个作为键,第二个作为值。

    //$data is contains your multidimensional array!
    $combinedData = array_combine($data[0],$data[1]);
    

    现在访问....喜欢!

    echo $combinedData["Item Code Number"] ; // output 1
    echo $combinedData["Item Name"]; //output Amazing Magic Set
    
    //And so on....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2020-06-11
      • 1970-01-01
      相关资源
      最近更新 更多