我不确定我是否在这里使用正确的表达来描述我需要的东西。但是,我的意思是我有两个不同的数组,我需要在另一个数组的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
字段值,但它也意味着我得到了每个帖子手动设置的值。虽然这是预期的行为,但我认为创建全球定价选项可以在价格变化的情况下轻松维护。
...
为了实现这一点,我创建了一个函数,以后会抓住&#34; global&#34;来自主题选项的定价选项,但是现在我已经手动创建了一个数组,其中的值将替换帖子的可重复自定义字段(如果设置),所以这里的功能:
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
的键值?
我的意思是&#34;分裂&#34;是每次第一个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循环中单独回显时。
答案 0 :(得分:0)
我不确定你的意思是“分裂”。
我认为
$small_pizza = '25,90';
$medium_pizza = '32,90';
$large_pizza = '39,90';
$food_menu_prices = ['small_pizza'=>$small_pizza, 'medium_pizza'=>$medium_pizza, 'large_pizza'=>$large_pizza];
将在$food_menu_prices
哈希中设置您想要的值。我假设您要在第一个foreach
中访问此内容,您希望根据大小查找披萨的全球价格。这应该工作。