проверка результата массива внутри для каждого цикла - PullRequest
0 голосов
/ 12 июля 2020

у меня есть этот запрос

 $cartInfo = "SELECT * 
                FROM cart LEFT JOIN products ON cart.product_id = products.prod_id WHERE cart.user_id = :cos_id GROUP BY order_num";
                $cartInfo_result = $conn->prepare($cartInfo);
                $cartInfo_result->execute([':cos_id'=>$customer_id]);
                $carts = $cartInfo_result->fetchAll();

результат:

Array
(
    [0] => Array
        (
            [cart_id] => 31
            [0] => 31
            [order_num] => 2097
            [1] => 2097
            [product_id] => 32
            [2] => 32
            [quta] => 1
            [3] => 1
            [price] => 4
            [4] => 4
            [user_id] => 4
            [5] => 4
            [order_status] => 0
            [6] => 0
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 22:09:11
            [8] => 2020-07-12 22:09:11
        )

    [1] => Array
        (
            [cart_id] => 34
            [0] => 34
            [order_num] => 7684
            [1] => 7684
            [product_id] => 34
            [2] => 34
            [quta] => 4
            [3] => 4
            [price] => 3
            [4] => 3
            [user_id] => 4
            [5] => 4
            [order_status] => 1
            [6] => 1
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 21:44:53
            [8] => 2020-07-12 21:44:53
        )

)

из этого массива я создаю foreach l oop:

<tbody>
<?php $sts = 0;
$run = 1;
foreach ($carts as $cart) : ?>
    <?php
    $cartInfoCheck = "SELECT * FROM cart WHERE  order_num = :order_num";
    $cartInfo_resultC = $conn->prepare($cartInfoCheck);
    $cartInfo_resultC->execute(['order_num' => $cart['order_num']]);
    $checkcarts = $cartInfo_resultC->fetchAll();

    print_r($checkcarts);
    ?>
    <tr role="row" class="even">
        <td class="sorting_1"><?= $run ?></td>
        <td>#<?= $cart['order_num'] ?></td>
        <td><?= date('d-m-Y', strtotime($cart['created_at'])) ?></td>
        <td><?php if (in_array('0', $userArr)) echo 'Not Complete'; else echo 'Complete' ?></td>
        <td><?php if (in_array('0', $adminArr)) echo 'Not Complete'; else echo 'Complete' ?></td>
        <td>
            <?php if (in_array('0', $userArr)) : ?>
                <a data-toggle="tooltip" data-placement="top" style="cursor: not-allowed" title="Order Not Complete"><i class="fa fa-eye text-success"></i></a>
            <?php else: ?>
                <a href="GeneralAdd.php?OrderInfo=<?= $cart['cart_id'] ?>&type=Order" data-toggle="tooltip" data-placement="top" title="View/Edit User"><i class="fa fa-eye text-success"></i></a>&nbsp; &nbsp;
            <?php endif; ?>
        </td>
    </tr>
    <?php $sts++;
    $run++; endforeach; ?>
</tbody>

это результат, который я получаю из запроса внутри l oop:

Array
(
    [0] => Array
        (
            [cart_id] => 31
            [0] => 31
            [order_num] => 2097
            [1] => 2097
            [product_id] => 32
            [2] => 32
            [quta] => 1
            [3] => 1
            [price] => 4
            [4] => 4
            [user_id] => 4
            [5] => 4
            [order_status] => 0
            [6] => 0
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 22:09:11
            [8] => 2020-07-12 22:09:11
        )

)
Array
(
    [0] => Array
        (
            [cart_id] => 34
            [0] => 34
            [order_num] => 7684
            [1] => 7684
            [product_id] => 34
            [2] => 34
            [quta] => 4
            [3] => 4
            [price] => 3
            [4] => 3
            [user_id] => 4
            [5] => 4
            [order_status] => 1
            [6] => 1
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 21:44:53
            [8] => 2020-07-12 21:44:53
        )

    [1] => Array
        (
            [cart_id] => 35
            [0] => 35
            [order_num] => 7684
            [1] => 7684
            [product_id] => 35
            [2] => 35
            [quta] => 4
            [3] => 4
            [price] => 980
            [4] => 980
            [user_id] => 4
            [5] => 4
            [order_status] => 1
            [6] => 1
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 21:44:53
            [8] => 2020-07-12 21:44:53
        )

    [2] => Array
        (
            [cart_id] => 36
            [0] => 36
            [order_num] => 7684
            [1] => 7684
            [product_id] => 33
            [2] => 33
            [quta] => 5
            [3] => 5
            [price] => 1752
            [4] => 1752
            [user_id] => 4
            [5] => 4
            [order_status] => 1
            [6] => 1
            [admin_status] => 0
            [7] => 0
            [created_at] => 2020-07-12 21:44:53
            [8] => 2020-07-12 21:44:53
        )

)

то, что я пытаюсь сделать, это проверить, имеет ли какой-либо из массивов значение статуса заказа 0 в соответствии с номером заказа.

я не manege, чтобы получить результат, потому что основной l oop имеет только 2 значения. а результат не индивидуален для каждого номера заказа?

1 Ответ

0 голосов
/ 13 июля 2020

Похоже, заказ может состоять из нескольких тележек. Чтобы получить свой чек, вы можете построить $userArr и $adminArr, как это, чтобы проверить, является ли какой-либо из них 0:

$userArr = array_column($checkcarts, 'order_status');
$adminArr = array_column($checkcarts, 'admin_status');

array_column будет читать все значения столбца для всех строк ( тележки) и возвращает их в виде массива.

Поместите код сразу после $checkcarts = $cartInfo_resultC->fetchAll();

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...