Php foreach结果的阶数

Php foreach结果的阶数,php,wordpress,Php,Wordpress,我得到了一个函数,在那里我收集数据,然后爆炸,这个函数在wordpress的一段时间内 global $woocommerce; global $wpdb; $args = array( 'post_type' => 'product', 'stock' => 1, 'posts_per_page' => -1); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_p

我得到了一个函数,在那里我收集数据,然后爆炸,这个函数在wordpress的一段时间内

global $woocommerce; 
global $wpdb;
$args = array( 'post_type' => 'product', 'stock' => 1, 'posts_per_page' => -1);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();         
$order_id = $loop->post->ID;
foreach($product as $sku){
    $sku = $product->get_sku();
    $sku_s = explode('-', $sku);
    $camp = $sku_s[0];
    $itm_n = $sku_s[1];
}

<h6><span class="a1"><?php echo $camp;?></span>-<span class="a2"><?php echo $itm_n;?></span></h6>
global$woodcommerce;
全球$wpdb;
$args=array('post\u type'=>product'、'stock'=>1、'posts\u per\u page'=>1);
$loop=新的WP_查询($args);
而($loop->have_posts()):$loop->the_post();
$order\u id=$loop->post->id;
foreach($sku形式的产品){
$sku=$product->get_sku();
$sku_s=爆炸('-',$sku);
$camp=$sku_s[0];
$itm_n=$sku_s[1];
}
-
我的输出
是这样吗

<h6><span class="a1">581</span>-<span class="a2">20</span></h6>
<h6><span class="a1">581</span>-<span class="a2">50</span></h6>
<h6><span class="a1">581</span>-<span class="a2">1</span></h6>
<h6><span class="a1">581</span>-<span class="a2">6</span></h6>
<h6><span class="a1">581</span>-<span class="a2">9</span></h6>
581-20
581-50
581-1
581-6
581-9
581-20
581-1
581-9 .... 以此类推

但我需要对数字进行排序,例如按顺序排序

581-1
581-6
581-9……等等


感谢您的帮助。

为您的SKU创建一个比较功能,即

function myComparison(a,b) {
    a.id<b.id;
}

无法准确查看对象的布局,但我希望这有助于找到正确答案。

首先,这个foreach循环没有多大意义。为什么要迭代
$sku
以立即用
$product->get_sku()
覆盖它

//你写了什么
foreach($sku形式的产品){
$sku=$product->get_sku();
$sku_s=爆炸('-',$sku);
$camp=$sku_s[0];
$itm_n=$sku_s[1];
}
//你是说这个吗?
foreach($products as$product){
$sku=$product->get_sku();
$sku_s=爆炸('-',$sku);
$camp=$sku_s[0];
$itm_n=$sku_s[1];
}
假设您可以确定在每次迭代中提取哪个变量(并且它类似于上面更正的循环),您可以尝试以下两种方法之一

(1) 您是否尝试过将
orderby
传递给正在运行的
WP\u查询

(2) 您需要对结果重新编制索引,以便您的订单基于SKU的自然排序顺序

while($loop->have_posts()):$loop->the_post();
$order\u id=$loop->post->id;
//创建新阵列以按SKU保存
$sortProducts=array();
foreach($products as$product){
$sortProducts[$product->get_sku()]=$product;
}
结束时;
//按自然顺序排序
ksort($sortProducts,SORT_NATURAL);
//请注意,这是一个不同的foreach循环
foreach($sku=>$product的sortProducts){
$sku=$product->get_sku();
$sku_s=爆炸('-',$sku);
$camp=$sku_s[0];
$itm_n=$sku_s[1];
echo“$camp-$itmn”;
}
示例输出图像


谢谢你的回答,但我该怎么回答呢?例如,这个函数对我来说是新的,我是根据您的javascript标记回答的,仔细检查显示您所指的代码是PHP(也有标记)。这里有大量的PHP排序示例;全球$wpdb$args=array('post\u type'=>'product','stock'=>1,'posts\u per\u page'=>24,'orderby'=>'sku','order'=>'ASC')$loop=新的WP_查询($args);我从查询中复制了你的代码,但是没有显示任何内容?使用订单参数排序,但不好,因为我的sku是581-20581-1581-100,系统是这样放置的581-1581-100,581-20,我想因为我需要在sku中放入000,但我有很多产品。我误解了你试图排序的方式。假设您使用的是非数字(即连字符),并且您使用的是581-1581-6581-9,这表示自然顺序。你的意思是什么?另外,关于你的WP_查询不起作用,你需要看看我关于修复你的foreach循环的评论,根据我列出的观察,这显然没有做任何事情。一旦您解决了这个问题(以适用于您的应用程序的任何方式),这个查询就会工作。但是没有关于$loop->the_post()提取的值的更多信息,我只能推测并为您指出正确的方向。我上传了我输出示例的图像,字体大小中的数字是我想要排序的,所以我想我需要对所有查询进行排序,正如您所说的
$skus.sort(myComparison);