doulin2025 2014-02-04 10:30
浏览 44
已采纳

在包含多维数组的关联数组中存在组合

I have an associative array witch contains a multidimensional one.

Here's the famous array:

$existingCategoryAttributesNames[] = array(
    'attributeName'     => $existingAttributeOverridedAttribute->getAttribute()->getName(),
    'categoryName'      => $existingCategory->getName(),
    'categoryAttribute' => $existingAttributeOverridedAttribute);

I would like to test if a combination of attributeName and categoryName exists and gets the categoryAttribute associated.

How can I do that? If the combination exists I modify it, if not I add something in my BDD. With my actual code (combination of a foreach and if (in_array)) it compares every single line! If the combination doesn't match with the first element, it adds, even if it matches with the fifth for example..

Examples with values:

My array in witch I have to compare a combination :

[6] =>
  array(3) {
   'attributeName'     => string(5) "doors"
   'categoryName'      => string(8) "Voitures"
   'categoryAttribute' => "example"   
}
  • 写回答

1条回答 默认 最新

  • doupeng8419 2014-02-04 10:36
    关注

    You can build another array with indices for attribute and category name:

    $combinations = [];
    array_walk($existingCategoryAttributesNames, function($item) {
        $combinations[$item['attributeName']][$item['categoryName']] = $item['categoryAttribute'];
    });
    

    Then your test becomes:

    if (isset($combinations['doors']['Voiture'])) {
        // do something
    }
    

    See also: array_walk

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里