【问题标题】:php codeigniter: how to combine two arrays to give more value to the array?php codeigniter:如何组合两个数组以赋予数组更多价值?
【发布时间】:2015-05-22 15:31:47
【问题描述】:

我有两个这样的数组

数组 1

array(3) { [0]=> int(14) [1]=> int(16) [2]=> int(17) } 

数组 2

array(3) { [0]=> float(0.46902846738366) [1]=> float(0.40289063077504) [2]=> float(0.54903658244928) } 

array 1 是一个数组,其中包含数据库表 id 上的关联数组的值。

14、16、17 是我的数据库表的 id。

数组 2 是一个数组,其中包含我所做的数学运算的结果。我有一个数组是动态数组。

所以我想

id 14 的值为 0.46902846738366

id 16 的值为 0.40289063077504

id 17 的值为 0.54903658244928

。然后每个 id 都存储在每个变量本身中。

如何组合两个数组??谢谢!

【问题讨论】:

  • Bayu,你需要这样的东西 array(3) { [0]=> array(2) { [0]=> int(14) [1]=> float(0.343434) } [ 1]=> array(2) { [0]=> int(16) [1]=> float(0.123454) } [2]=> array(2) { [0]=> int(17) [1] => 浮动(0.3454345) } } ?
  • @Mohammadhzp 是的,我希望将该值与 id 结合使用。我可以使用该数组访问我的数据库表中的数据吗?以及是否可以将任何数组键存储在单独的变量中?例如对于 id 14 $ a, $ b 对于 id 17 ....................
  • @rizier123 : 这不是重复的,最好再次提出问题,以便人们回答这个问题
  • @Mohammadhzp 好吧,你猜对了,但 OP 没有指定 如何 他想合并两个数组。所以你也可能猜错了。

标签: php mysql arrays codeigniter


【解决方案1】:

根据您的问题来组合数组,您可以使用array_combine 将数组压缩在一起

<?php
$array_a = [14,16,17];
$array_b = [0.33333, 0.6434, 0.123456];
$zip_array = array_combine($array_a, $array_b);

这将回答您的问题,至于您的评论,如果您想将 id 作为具有值的变量,您可以这样做:

extract($zip_array, EXTR_PREFIX_ALL, 'id'); // extract all variable and prefix them with id_
print_r($zip_array);
echo $id_14; // the same as $zip_array[14];

这里我添加了“id”作为变量的前缀,因为 PHP 中的变量不能是数字,你可以使用任何你想要的前缀

更新:@u_mulder 提到你也可以使用 array_map(),更好的做法是

$zip_array = array_map(NULL, $array_a, $array_b);

但在这种情况下,您无法正确提取值

【讨论】:

  • 下一个问题是如何使用 id 从数据库中访问信息?例如,我有一个 id 为 14、16、17 的表“存储”。?此外,在我进行数学运算以计算具有最高值的 id 之前,使用函数 max() 的 id 具有值;你能教我算法吗?再次感谢:-) @Mohammadhzp
  • 欢迎您,对于您的其他问题,最好提出一个新问题并将这个问题留给其他人
【解决方案2】:

如果您想将一个数组用于您的键,而另一个 - 用于值,那么您可以使用array_combine

$result = array_combine(
    array(14, 16, 17), 
    array(0.46902846738366, 0.40289063077504, 0.54903658244928)
);

如果你想idvalue作为子数组的元素,那么你可以使用array_map

$ids = array(14,16,17);
$vals = array(0.46902846738366, 0.40289063077504, 0.54903658244928);

$result = array_map(
    function($id, $val) {
        return array($id, $val);
    },
    $ids,
    $vals
);

【讨论】:

    【解决方案3】:

    您是否正在寻找这样的东西? 假设两个数组的大小相同。如果你不想强制,你可以更改int,float,而是想要一个字符串数组。

    <?php
    $array1 = array('1','24','98');
    $array2 = array('0.8778','1.764646','6.9488499');
    
    $result = array();
    for($i=0;$i<sizeof($array1);$i++){
    $result[] =array('0' =>(int)$array1[$i], '1' => (float)$array2[$i]);
    }
    var_dump($result);
    

    输出

    array(3) {
      [0]=>
      array(2) {
        [0]=>
        int(1)
        [1]=>
        float(0.8778)
      }
      [1]=>
      array(2) {
        [0]=>
        int(24)
        [1]=>
        float(1.764646)
      }
      [2]=>
      array(2) {
        [0]=>
        int(98)
        [1]=>
        float(6.9488499)
      }
    }
    

    更好的做法是使用 php 函数,如其他答案中所述。这是一个简单的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多