根据数组中元素的索引设置变量值

时间:2018-01-29 19:22:56

标签: php arrays

我在一个数组中有一个数组,我有一个变量,我想根据数组元素的索引设置它的值。

这是数组:

$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'

3 个答案:

答案 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。