【问题标题】:PHP loop through array where key has more than one object or arrayPHP循环遍历数组,其中键具有多个对象或数组
【发布时间】:2016-10-25 08:49:38
【问题描述】:

我有一个自定义表,我正在查询并组合相同的事务 ID,然后将查询放入数组中。这样可以将具有相同交易 ID 的产品组合在一起。现在,我需要弄清楚如何从键中获取多个对象。示例代码:

初始查询

$myArray = $wpdb->get_results("SELECT * FROM " tablename);
$newArray=array();                  
foreach($myArray as $val){
    $newKey=$val->txn_id;
    $newArray[$newKey][]=$val;
}

打印出来会给我:

Array
(
    [265] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 26
                    [txn_id] => 265
                    [product_id] => 99
                    [product_name] => Product name
                )

            [1] => stdClass Object
                (
                    [id] => 27
                    [txn_id] => 265
                    [product_id] => 98
                    [variation_id] => 
                    [product_name] => Product name 
                )

        )

    [244] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 28
                    [txn_id] => 244
                    [product_id] => 98
                    [product_name] => Product name
                )

        )

    [299] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 42
                    [txn_id] => 299
                    [product_id] => 99
                    [product_name] => Product name
                )

        )

    [300] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 43
                    [txn_id] => 300
                    [product_id] => 99
                    [product_name] => Product name
                )

        )

)

我的循环:

<?php
foreach ($newArray as $key => $array){
        ?>
<table border="0" cellpadding="0" cellspacing="0">
    <tr class="header">
        <td width="73%" valign="top">KEY</td>
        <td width="73%" valign="top">Product Id</td>
        <td width="27%" valign="top">Product Name</td>
    </tr>
    <tr class="details">
        <td width="27%" valign="top"><?php echo $key; ?></td>
        <td width="73%" valign="top"><?php echo $newArray[$key][0]->product_id; ?></td>
        <td width="27%" valign="top"><?php echo $newArray[$key][0]->product_name ?></td>
    </tr>
</table>
<?php } ?>

问题在于键“265”我只使用 $newArray[$key][0]; 获取第一个对象;我需要两者兼得。

【问题讨论】:

    标签: arrays foreach key


    【解决方案1】:

    您还需要循环内部数组,如下所示。

    <?php
    foreach ($newArray as $key => $array){
            ?>
    <table border="0" cellpadding="0" cellspacing="0">
        <tr class="header">
            <td width="73%" valign="top">KEY</td>
            <td width="73%" valign="top">Product Id</td>
            <td width="27%" valign="top">Product Name</td>
        </tr>
            <?php
            foreach($array as $values) {
                ?> 
        <tr class="details">
            <td width="27%" valign="top"><?php echo $key; ?></td>
            <td width="73%" valign="top"><?php echo $values->product_id; ?></td>
            <td width="27%" valign="top"><?php echo $values->product_name ?></td>
        </tr>
           <?php } ?>
    </table>
    <?php } ?>
    

    【讨论】:

    • 谢谢,我知道这一定是我缺少的一些简单的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多