【问题标题】:echoing an array value giving a key from another array回显一个数组值,给出另一个数组的键
【发布时间】:2018-06-06 15:09:02
【问题描述】:

我知道这很简单,但我无法理解它......

我有 2 个数组。两者都是从数据库查找中填充的。

数组 1

Array ( 
[sailID] => 7 
[sailTag] => 100004 
[assigneduser] => Jason Ellmers 
[assigneddate] => 2018-05-30 17:48:57 
[cutuser] => Jason Ellmers 
[cutdate] => 2018-05-30 20:31:23 
[stickuser] => Jason Ellmers 
[stickdate] => 2018-05-30 20:38:24 
[corneruser] => Jason Ellmers 
[cornerdate] => 2018-05-30 20:38:54 
[finishuser] => Jason Ellmers 
[finishdate] => 2018-05-30 20:39:53 
[checkuser] => 
[checkdate] => 0000-00-00 00:00:00 
[DesignRef] => 420abcdefg 
[OrderingLoft] => 1 
[ClassRef] => 1 
[ClothType] => Bainbridge 
[ClothColour] => White 
[ClothWeight] => 12oz 
[SailNo] => GB342398 )

数组 2

Array ( 
[0] => Array ( 
      [id] => 1 
      [name] => 420 ) 
[1] => Array ( 
      [id] => 2 
      [name] => J24 ) )

我所做的是能够回显到屏幕 $array1['ClassRef 是在 Array2 中查找 ID'并显示来自 Array2 的名称]

所以对于上面的例子,Echo 是 '420'

我想我可以使用 foreach 或 while 循环来做到这一点,但这似乎有点麻烦???

【问题讨论】:

  • 格式化您的数组以便我们可以读取它们,最好使用 var_export 代替。这样我们就可以复制粘贴你的数组了。
  • 使用array_column($array2, "name", "id");转换你的array2,然后它会被id索引。
  • 所以我想回显 $array1['ClassRef'],但我希望它输出 '420'(来自数组 2)而不仅仅是 '1'
  • 谢谢@nigelren,好的,我能得到代码就这么短吗? <?php $class= array_column($classes, 'name', 'id'); echo $class[$saildata['ClassRef']];?>
  • 为什么不foreach ($classes as $a) {if ($a["id"] === $saildata["ClassRef"]) {echo $a["name"];}}

标签: php arrays matching


【解决方案1】:

我不得不将一些测试数据放在一起,但从评论来看,这个想法是使用array_column() 重新索引第二个数组,并将 id 作为索引,所以代码(正如你已经解决的那样) 是...

$array1 =[
    "sailID" => 7,
    "sailTag" => "100004",
    "ClassRef" => 1 ];

$array2 = [["id" => 1, "name" => "420"],
    ["id" => 2, "name" => "J24"]];

$array2 = array_column($array2, "name", "id");

echo $array2[$array1["ClassRef"]];

【讨论】:

    猜你喜欢
    • 2022-06-22
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多