gpt4 book ai didi

php - 需要循环逻辑帮助 - 无法正确比较

转载 作者:行者123 更新时间:2023-11-29 08:18:32 27 4
gpt4 key购买 nike

我有下表:

The table

我使用这个函数从中获取数据:

function get_cart_by($player_id)
{
global $db;

$sql = 'SELECT DISTINCT(item_id) FROM ' . PCP_MARKET_CART . '
WHERE player_id = ' . (int) $player_id;
$result = $db->sql_query($sql);
$rowset = $db->sql_fetchrowseT($result);
$db->sql_freeresult($result);

$cart = array();
foreach ($rowset as $item)
{
$cart[] = $item['item_id'];
}

return $cart;
}

结果如下所示:

Array
(
[0] => 16
[1] => 17
[2] => 49
[3] => 48
[4] => 18
[5] => 19
[6] => 51
)

现在我有一个数组,其中列出了另一个表中的所有产品,而无需查看 player_id。我想使用上面演示的数组,并向不使用 player_id 的商品添加自定义类,例如显示用户购物车中已有哪些商品。

列出所有产品的另一个数组如下所示:

Array
(
[0] => Array
(
[item_id] => 16
[parent_id] => 11
[cat_position] => 0
[item_position] => 1
[item_type] => product
[item_title] => Custom Business
[item_description] => Some description
[item_price] => 9.99
[item_units] => 500
[item_preview] => http://i.imgur.com/3eCpMMm.png
[times_sold] => 0
[daopay_url] => http://i.imgur.com/QA7bBfJ.jpg
[public] => 1
[time] => 1384709635
)

[1] => Array
(
[item_id] => 17
[parent_id] => 11
[cat_position] => 0
[item_position] => 1
[item_type] => product
[item_title] => Custom Business
[item_description] => Some description
[item_price] => 9.99
[item_units] => 500
[item_preview] => http://i.imgur.com/3eCpMMm.png
[times_sold] => 0
[daopay_url] => http://i.imgur.com/QA7bBfJ.jpg
[public] => 1
[time] => 1384709635
)
[2] => Array
(
[item_id] => 49
[parent_id] => 11
[cat_position] => 0
[item_position] => 1
[item_type] => product
[item_title] => Custom Business
[item_description] => Some description
[item_price] => 9.99
[item_units] => 500
[item_preview] => http://i.imgur.com/3eCpMMm.png
[times_sold] => 0
[daopay_url] => http://i.imgur.com/QA7bBfJ.jpg
[public] => 1
[time] => 1384709635
)


)

现在,基于第一个数组,我想在第二个数组上标记相同的商品 ID,并显示它们是不同的(在购物车上)。

我已经尝试了很多,由于某种原因,我设法只标记了 item_id 16 和 17,其余的由于某种原因没有被“标记”。

这是我使用的代码:

$cartar = $market->get_cart_by($user->data['player_id']);
$cartln = sizeof($cartar) - 1;

// Fetch items of the selected category
$items = $market->fetch_cat_items($cat_id); // Equivalent to the array above
$index = 0;

print_r($items);

foreach ($items as $item)
{
$name = $item['item_name'];
if ($cartln >= $index)
{
if ($cartar[$index] == $item['item_id'])
$name .= $cartar[$index];
}

echo $name;

$index++;
}

我试图让这个例子以最好的方式解释我的情况。因此,当我回显 $name 时,它只输出 thename16thename17 (这两个),但它不会继续到 49 等等上。

请注意,包含所有产品的数组相当大,我仅出于演示目的将其缩短。

我的代码是否失败了?为什么只有前两项被“标记”?我现在很着急, session 回来后我会尝试进一步解释我的问题。

最佳答案

我不知道我是否理解正确,但也许你想这样做:

foreach ($items as $item) {
$name = $item['item_name'];

if(in_array($item['item_id'],$cartar)) {
$name .= $item['item_id'];
}
echo $name;
}

使用in_array()来检查item_id是否存在于$cartar中。无论在数组中的哪个位置。

关于php - 需要循环逻辑帮助 - 无法正确比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20052669/

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