我在一个数组中有一个数组,我有一个变量,我想根据数组元素的索引设置它的值。
这是数组:
$data_array = array('1A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'2A' => array(5.8, 2.23, 5.23, 2.67, 2.3, 2.1, 1.27, 4.24),
'3A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'4A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'5A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'6A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24));
我想做的是:
当它位于index 0
数组1A
时,变量quantity
值应设置为1-50
当它位于数组index 1
的{{1}}时,变量值应设置为1A
我编写了foreach:
quantity = '51-100'
无论元素的索引如何,都会返回 foreach ( $data_array as $cp => $value ) {
foreach ($value as $price){
if ($value[0]) {
$quantity = '1-59';
}
else if ($value[1]){
$quantity = '51-100';
}
else if ($value[2]){
$quantity = '101-150';
}
else if ($value[3]){
$quantity = '151-200';
}
else if ($value[4]){
$quantity = '201-250';
}
else if ($value[5]){
$quantity = '251-300';
}
else if ($value[6]){
$quantity = '301-350';
}
else if ($value[7]){
$quantity = '351-400';
}
//output
$values[] = $wpdb->prepare( "(%s, $f)", $quantity, $price );
}
}
。
我不确定我是否正确地做到了。任何指针都会受到赞赏。
输出:
$quantity = '1-50'
答案 0 :(得分:2)
您需要$value
数组的索引,您可以使用=>
语句中的foreach
语法获取该索引。然后你可以按如下方式简化内循环:
foreach ($value as $i => $price){
$quantity = ($i*50+1) . "-" . ($i*50+50);
$values[] = $wpdb->prepare( "(%s, $f)", $quantity, $price );
}
答案 1 :(得分:1)
我认为这会给你你想要的东西。
更多的数据驱动。
dplyr
答案 2 :(得分:1)
你做错了,你没有将任何值与如果匹配,那么它总是返回 true 并指定第一个值是 1-50
注意:如果你的子数组包含8个元素,这是合适的,否则你可以添加更多 else if else 对应元素。
$data_array = array('1A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'2A' => array(5.8, 2.23, 5.23, 2.67, 2.3, 2.1, 1.27, 4.24),
'3A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'4A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'5A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24),
'6A' => array(3.23, 5.23, 1.23, 8.67, 2.3, 2.1, 1.27, 4.24));
foreach ( $data_array as $cp => $value ) {
foreach ($value as $k => $price){
if ($k == 0) {
$quantity = '1-50';
}
else if ($k == 1){
$quantity = '51-100';
}
else if ($k == 2){
$quantity = '101-150';
}
else if ($k == 3){
$quantity = '151-200';
}
else if ($k == 4){
$quantity = '201-250';
}
else if ($k == 5){
$quantity = '251-300';
}
else if ($k == 6){
$quantity = '301-350';
}
else if ($k == 7){
$quantity = '351-400';
}
//output
$values[] = $wpdb->prepare( "(%s, $f)", $quantity, $price );
}
}
工作示例: https://3v4l.org/hZ6kq
注意:使用太多 if-elseif 不是一个好习惯,请使用一些逻辑而不是if-elseif。