Foreach 环路输出


Foreach loop output

下面是输出为" SKU:1018 SKU:1026 "的代码。 我无法从此代码中获得所需的输出,请帮助

我想要类似"SKU:1018,1026"的输出

   <?php
        $new= $order->get_items();
            foreach ( $new as $item ) {
                $product_id = $item['product_id'];
                $prod = new WC_Product($product_id);
                $sku=$prod->get_sku();
                    echo "SKU:".$sku." ";
            }
   ?>

您希望根据字符串SKU:显示所有 SKU

您正在循环中打印字符串SKU

取而代之的是获取数组中的所有 SKU 并使用 implode() 函数打印它。

<?php
$new= $order->get_items();
$skus = array();
foreach ( $new as $item ) {
  $product_id = $item['product_id'];
  $prod = new WC_Product($product_id);
  $skus[] = $prod->get_sku();
}
echo "SKU:" . implode(',', $skus);
?>

使用数组来处理多个字符串始终是安全的,因为您可以轻松应用任何复杂的逻辑。

同样,如果未找到数据,则上面示例中的数组代码将简单地打印空白而不会导致任何错误。

您应该能够通过以下方式获得所需的SKU:1018,1026输出:

$prefix = "SKU:"
foreach ($new as $item) {
    $product_id = $item['product_id'];
    $prod = new WC_Product($product_id);
    $sku = $prod->get_sku();
    echo $prefix . $sku;
    $prefix = ",";
}

这只是将初始前缀设置为 SKU:然后为每个项目输出该前缀,后跟项目编号。输出第一个后,它将前缀设置为 ,,以便后续项目前面将带有该逗号。

更改$sku

$sku[] 、数组和

最后一行到

 echo "SKU:".implode(",",$sku);

试试这个:-

<?php
        $new= $order->get_items();
        $txt = "SKU: ";
            foreach ( $new as $item ) {
                $product_id = $item['product_id'];
                $prod = new WC_Product($product_id);
                $sku=$prod->get_sku();
                  $txt .= $sku.", ";
            }
             $txt = rtrim(", ", $txt);
       echo $txt;
   ?>

尝试使用以下代码,使用 implode 获取数组值作为逗号分隔。

<?php
    $new= $order->get_items();
        foreach ( $new as $item ) {
            $product_id = $item['product_id'];
            $prod = new WC_Product($product_id);
            $sku[]=$prod->get_sku();
           }
     $skulist=implode(",",$sku);
     echo "SKU:".$skulist." ";
 ?>