0

I have a custom table that I am querying and combining transaction id's that are the same, then placing the query into and array. This way the products with the same transaction id can be combined together. Now, I need to figure out how to get more than one object from the keys. example code:

Initial query

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

Printing this out will give me:

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
                )

        )

)

My Loop:

<?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 } ?>

The problem with this is for the key "265" I only get the first object using $newArray[$key][0]; I need to get both.

1 Answer 1

1

You need to loop the inner array also as below.

<?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 } ?>
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, I knew it had to be something simple I was missing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.