只有Foreach中具有最高值的回显项目

时间:2016-09-01 作者:Ben H

我正试图从WordPress中的一组SKU中获取最大数量的SKU。我有下面的代码,可以得到所有SKU的列表。然后我只显示包含字符串的那些\'BUR\' 然后我使用explode 调整输出。基于以下情况,最好的方法是什么?

示例数据:

ABB-0001-1
ABB-0002-1
ABB-0003-1
BUR-0001-1
BUR-0002-1
BUR-0003-1
当前代码:

<?php
$args = array(
    \'post_type\' => array(\'product\'), 
    \'posts_per_page\' => -1
);

$wcProductsArray = get_posts($args);

if (count($wcProductsArray)) {
    foreach ($wcProductsArray as $productPost) {
        $productSKU = get_post_meta($productPost->ID, \'_sku\', true);
        $productTitle = get_the_title($productPost->ID);
            if (strpos($productSKU, \'BUR\') !== false) { 
                $s = explode("-",$productSKU);
                echo \'<li>\' . $s[1] . \'</li>\';
            }
    }
}
?>
电流输出:

0003
0002
0001
所需输出:

0003

1 个回复
SO网友:Ethan O\'Sullivan

从技术上讲,这更像是一个普通的PHP问题,而不是应该出现的WordPress问题Stack Overflow 相反

echo 只有来自array, 尝试存储您的项目($s[1]) into an array instead 然后使用max(). 类似这样:

$args = array(
    \'post_type\' => array(\'product\'), 
    \'posts_per_page\' => -1
);

$wcProductsArray = get_posts($args);
$skuList = array();

if (count($wcProductsArray)) {
    foreach ($wcProductsArray as $productPost) {
        $productSKU = get_post_meta($productPost->ID, \'_sku\', true);
        $productTitle = get_the_title($productPost->ID);
            if (strpos($productSKU, \'BUR\') !== false) { 
                $s = explode("-",$productSKU);
                // echo \'<li>\' . $s[1] . \'</li>\';
                $skuList[] = $s[1];
            }
    }
}

echo( max($skuList) );
我现在没有WooCommerce设置来验证它,所以您需要确认它是否可以正常工作或使用它。