gpt4 book ai didi

php - 合并 2 个 while 循环结果

转载 作者:行者123 更新时间:2023-12-05 07:46:10 25 4
gpt4 key购买 nike

我们有 2 个 while 循环,我们正在显示 2 个不同的结果

我们需要合并或者不合并我们需要合并 2 个结果。

在下图中,

第 1 个 while 循环结果 = > 第 1、2、6 行。

第 2 个 while 循环结果 => 第 3、4、5 行。

我们需要第 3、4 和 5 行结果在最后 2 列的第 1、2、6 行 [付费状态和佣金]。

第 1 个结果来自数据库 1,第 2 个结果来自数据库 2 的表 [order_details]

enter image description here

enter image description here

$stmt = $user_home->runQuery("SELECT * FROM order_details");  
$stmt->execute(array(":uid" => $_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->execute();

$i = 0;

foreach($order as $orderData)
{
$k = 0;
$orderitems = $orderData['dproduct_id'];
$orderitemsarray = explode(",", $orderitems);

/* 1st while */
while ($k < count($orderitemsarray))
{

if ($orderitemsarray[$k] != '0')
{

$stmtorders = $user_home->runQuery("SELECT * FROM order_details");
$stmtorders->execute(array(":dorder_id" => $orderData['entity_id']));
$roworders = $stmtorders->fetch(PDO::FETCH_ASSOC);
$dorderStatus = $roworders['dpaid_status'];

$productdetail = Mage::getModel('catalog/product')->load($orderitemsarray[$k]);
$designer_id = $productdetail->getDesignerID() ;

if($accountType == "admin")
{
$designerName = getDesignerName($productdetail->getDesignerID()) . " -(" . $productdetail->getDesignerID() . ")";

$responce[] = array(
$orderData->getIncrementId() ,
$orderitemsarray[$k],
$productdetail->getName() ,
$designerName,
$orderData['status'],
$data['dpaid_status'],
$data['commission'],
$sDate
);

}
}

$k++;
$i++;
}

/* 2nd while */

while($data = $stmt->fetch())
{

$responce[] = array(
$data['dorder_id'],
$data['dpaid_status'],
$data['commission']
);
$k++;
}
}

我试过下面的代码,但结果如下图 - 意味着只显示 2 行而不是 23 行....

while (($k < count($orderitemsarray)) &&  ($data = $stmt->fetch()))

enter image description here

完整页面如下:

enter image description here

我是 php 世界的新手,在发帖之前尝试了很多....

最佳答案

问题是,每当您使用空括号 [] 时,都会自动分配一个等于下一个可用数值的索引,并且您的数据最终会出现在下一个位置,因此需要正确的索引来解决此问题。

同时(($k < count($orderitemsarray)) && ($data = $stmt->fetch()))

如果任一条件失败,则循环结束并且您的 $data可能只有三个条目,即使 $orderitemsarray 也只显示那么多条目还有更多,我不确定,但你可以替换 whileif像这样声明和更改索引以使这些内容附加到同一行

$indx=0;

foreach($order as $orderData)
{
$k = 0;
//.. Stufff

/* 2nd while */
if($indx == 0 || $indx == 1 || $indx == 5)
{
if($data = $stmt->fetch())
{
$size = count($responce); // get size from that get its last index
$responce[$size-1] = array(
$data['dorder_id'],
$data['dpaid_status'],
$data['commission']
);
$k++; //<-- not sure why it's here but doesn't matter may be some magento stuff?
}
}
$indx++
}

编辑:不好意思,忽略我最后的评论试试这个

   $responce[$size-1] =  array_merge($responce[$size-1] , array(
$data['dorder_id'],
$data['dpaid_status'],
$data['commission']
) );

关于php - 合并 2 个 while 循环结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41141538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com