【问题标题】:Creating Associative Array in PHP在 PHP 中创建关联数组
【发布时间】:2012-10-12 16:22:23
【问题描述】:

我有一个多维数组。

$shop = array( 
              array("appn1", "pub1" ,"pub2" , "pub3"),
              array("appn2", "pub1"),
              array("appn3", "pub1" ,"pub2")
            ); 

每个数组中的第一项是申请号,每个数组中的其余部分是发布号。我像这样得到每个数组的第一项(申请号)和最后一项(最新出版号)

 $index = count(array_keys($shop));
    for($i=0;$i<$index;$i++){

        $appln_nr = $shop[$i][0];
        echo $appln_nr;

        $publn_nr_index = count(array_keys($shop[$i]))-1;
        $publn_nr = $shop[$i][$publn_nr_index];
        echo $publn_nr;
   }

现在我有了每个内部数组的申请号和发布号。

我想从申请号和发布号创建一个关联数组。

其中键应该是申请号,其值是发布号。

谢谢

编辑

我从 $shop 数组中得到什么

 Array
 (
  [0] => Array
    (
        [0] => appn1
        [1] => pub1
        [2] => pub2
        [3] => pub3
    )

  [1] => Array
    (
        [0] => appn2
        [1] => pub1
    )

  [2] => Array
    (
        [0] => appn3
        [1] => pub1
        [2] => pub2
    )
)

这就是我在关联数组中需要的东西

Array(
    "appn1" => "pub3"
    "appn2" => "pub1"
    "appn3" => "pub2"
)

【问题讨论】:

  • 如何从申请号和公开号创建关联数组?
  • 形成上面的数组..你的预期输出是什么......
  • @Baba 请看看我的编辑
  • 根据您的定义,您在一个 app_number 中有多个 pub_number。您是否希望每个元素的值都是 pub_numbers 数组

标签: php arrays associative-array


【解决方案1】:

在您编辑后,我终于明白了您想要什么 XD:

$shop = array(
    array("appn1", "pub1" ,"pub2" , "pub3"),
    array("appn2", "pub1"),
    array("appn3", "pub1" ,"pub2")
);
$shopNew = array();

foreach($shop as $value){
    $shopNew[$value[0]] = end($value);
}

// now if you want you can replace $shop and unset $shopNew
$shop = $shopNew;
unset($shopNew);    

print_r($shop); 

输出是这样的:

Array (
  [appn1] => pub3
  [appn2] => pub1
  [appn3] => pub2
)

【讨论】:

  • 这已经是我在做的事情了,我现在想把它改成关联数组
  • @UmairIqbal 它是一个关联数组。这就是显示的内容,除了他是var_dumped 结果而不是print_r
  • 我编辑了我的答案,因为问题一开始并不清楚,@UmairIqbal 的评论在编辑之前:P
【解决方案2】:

你可以试试

$shop = array(
        array("appn1","pub1","pub2","pub3"),
        array("appn2","pub1"),
        array("appn3","pub1","pub2")
        );

$final = array();
array_map(function ($var) use(&$final) {$final[reset($var)] = end($var);}, $shop);
var_dump($final);

输出

array
  'appn1' => string 'pub3' (length=4)
  'appn2' => string 'pub1' (length=4)
  'appn3' => string 'pub2' (length=4)

【讨论】:

    【解决方案3】:

    您可以通过使用第一个元素作为键(参见reset)和最后一个元素(参见end)作为值,轻松地将数组转换为新格式:

    foreach($shop as $fl) {
        $v[reset($fl)] = end($fl);
    }
    

    结果在$v 然后。

    如果要转换数组,还需要删除每个元素:

    foreach($shop as $v => $fl) {
        $shop[reset($fl)] = end($fl);
        unset($shop[$v]);
    }
    

    结果在$shop 然后。 Unset 负责从数组中删除。

    两种情况的输出都是:

    array(3) {
      'appn1' =>
      string(4) "pub3"
      'appn2' =>
      string(4) "pub1"
      'appn3' =>
      string(4) "pub2"
    }
    

    【讨论】:

      【解决方案4】:

      试试这个:

       foreach($shop as $k => $v) {            
           $new_arr[$v[0]] = end($v);      
       }
      

      它应该给你这个结果,

      $new_arr = array(
            "appn1" => "pub3",
            "appn2" => "pub1",
            "appn3" => "pub2"-
      );
      

      【讨论】:

        【解决方案5】:

        你也可以这样创作,

        $arrField = [];
        $arrField['id'] = '0001';
        $arrField["first_name"] ='Demo Test';
        print_r($arrField);
        

        print_r($arrField) 像这样显示输出。

        Array ( [id] => 0001 [first_name] => Demo Test )
        

        【讨论】:

          猜你喜欢
          • 2012-04-30
          • 2012-03-18
          • 1970-01-01
          • 2019-09-30
          • 2014-01-04
          • 1970-01-01
          • 2018-10-04
          • 2016-05-11
          • 2015-09-01
          相关资源
          最近更新 更多