【问题标题】:Two array keys with same value具有相同值的两个数组键
【发布时间】:2013-06-04 10:16:07
【问题描述】:

只是想知道如何轻松地拥有两个具有相同关联值数组键。我当前的代码是:

$arraytest = array(
        'test1', 'test2' => 1,
        'test3', 'test4' => 2,
)

我希望数组正常工作,因此返回以下代码:

$arraytest['test1'] returns 1
$arraytest['test2'] returns 1

谢谢你的帮助,m

【问题讨论】:

  • 这是不可能的,你的数组中不能有多个具有相同键的值检查这里stackoverflow.com/questions/16871279/combine-array-in-php/…
  • @Aquillo 问题已更改,请检查编辑
  • @mary13123123 你测试了吗 var_dump($arraytest);给出 array(4) { [0]=> string(5) "test1" ["test2"]=> int(1) [1]=> string(5) "test3" ["test4"]=> int( 2) }

标签: php arrays key associative


【解决方案1】:

您可以将一个变量的引用关联到两个数组键来模拟这种情况:

例如

$a = 2;

$arraytest = array (
  'test1' => &$a,
  'test2' => &$a
);

这样,当 'test1' 和 'test2' 指向内存中的 $a 时,您将始终拥有 " real" $a 使用数组的 'test1' 和 'test2'。 但是请记住,应避免在数组中使用引用,因为这会导致意外的程序行为:

来自 php.net 文档

"但是请注意,数组内部的引用可能是 危险的。使用 右侧的参考不会将左侧变成 引用,但数组内的引用保留在这些正常的 作业。这也适用于数组所在的函数调用 按值传递。”

更多细节在这里 => What References Do (php.net)

【讨论】:

    【解决方案2】:
        $a =array_merge(
          array_fill_keys( array('test','test2'), '1'),
          array_fill_keys( array('test3','test4'), '2') 
        );
    
        print_r($a);
    /*
        Array
        (
            [test] => 1
            [test2] => 1
            [test3] => 2
            [test4] => 2
        )
    */
    

    【讨论】:

      【解决方案3】:
      $arr = asign(array('test','test1'),'2');
      
      //print_r($arr);
      /*
      Array
      (
          [test] => 2
          [test1] => 2
      )
      */
      $arr = asign(array('test2','test3'),'3',$arr);
      
      print_r($arr);
      /*
      Array
      (
          [test] => 2
          [test1] => 2
          [test2] => 3
          [test3] => 3
      )
      */
      
      
      function asign($key,$val,$arr=array()){
      
      foreach($key AS $v){
      
      $arr[$v]=$val;
      }
      
      return $arr;
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-11
        • 2017-06-02
        • 2022-11-18
        相关资源
        最近更新 更多