【发布时间】:2016-06-05 19:42:39
【问题描述】:
我不确定我是否在这里使用了正确的表达方式来描述我的需求。但是,我的意思是我有两个不同的数组,我需要在另一个数组的 foreach 循环中拆分一个特定的数组键值。
以以下为例。
// This comes from a repeatable group of fields
$food_prices = get_post_meta( get_the_ID(), '_prefix_food_price_group', true );
// I get the repeatable group fields' values with the following foreach loop:
foreach ((array) $food_prices as $key => $value) {
if (!(isset($value['price_legend']))) {
// do nothing
} else {
$price_label = esc_html($value['price_label']);
}
if (!(isset($value['price']))) {
// do nothing
} else {
$sale_price = esc_html($value['price']);
}
echo '<div><span>Label: </span>'. $price_label .'</div>';
echo '<div><span>Price: </span>'. $sale_price .'</div>';
}
对于我在编辑帖子时为上面的自定义字段设置的任何值,上面的 foreach 循环将导致如下结果:
价格: 25,90
价格: 32,90
价格: 39,90
到目前为止,以上为我提供了所有重复的 price 字段值,但这也意味着我将获得基于每个帖子手动设置的值。尽管这是预期的行为,但我认为创建全局定价选项可以在价格发生变化时轻松维护。
...
为此,我创建了一个函数,该函数稍后会从主题选项中获取“全局”定价选项,但现在我手动创建了一个数组,其值将替换帖子的可重复自定义字段(如果已设置) ,所以这是函数:
function get_global_food_menu_prices() {
//$small_pizza = get_option( $post_id, 'small_size_price' );
$small_pizza[0] = '25,90';
$medium_pizza[1] = '32,90';
$large_pizza[2] = '39,90';
$food_menu_prices = ['small_pizza'=>$small_pizza, 'medium_pizza'=>$medium_pizza, 'large_pizza'=>$large_pizza];
return $food_menu_prices;
//var_dump($food_menu_prices);
}
上述var_dump($food_menu_prices); 的结果如下:
array (size=3)
'samll_pizza' =>
array (size=1)
0 => string '25,90' (length=5)
'medium_pizza' =>
array (size=1)
1 => string '32,90' (length=5)
'large_pizza' =>
array (size=1)
2 => string '39,90' (length=5)
现在,如何在第一个 foreach 循环的每次迭代中拆分数组 $food_menu_prices 的键值?
我对“拆分”的意思是,每次第一个 foreach 会从其值数组中打印一个重复的 price 键值,然后我希望它从 $food_menu_prices 数组中打印一个键值而是。
我尝试了以下类似的方法,但它从 get_global_food_menu_prices() 函数返回所有键值。
foreach ((array) $food_prices as $key => $value) {
if (!(isset($value['price_legend']))) {
// do nothing
} else {
$price_label = esc_html($value['price_label']);
}
if (!(isset($value['price']))) {
// do nothing
} else {
$sale_price = esc_html($value['price']);
}
echo '<div><span>Label: </span>'. $price_label .'</div>';
if function_exists('get_global_food_menu_prices') {
echo get_global_food_menu_prices();
} else {
echo '<div><span>Price: </span>'. $sale_price .'</div>';
}
}
显然,它会返回:
价格: 25,90 32,90 39,90 当我希望在上面的 foreach 循环中分别回显每个键值时。
【问题讨论】:
标签: php arrays wordpress foreach