【问题标题】:Get the key for a value in my array获取我的数组中某个值的键
【发布时间】:2015-07-15 08:08:12
【问题描述】:

我有一个这样的用户数组

array(3) { 
    ["A057"] => array(7) { 
        [0] => string(13) "KENE Michael " 
        [1]=> string(16) "KIRAN Maria " 
        [2]=> string(14) "ATHISA KATHISA " 
        [3]=> string(16) "SATYA Dev " 
        [4]=> string(16) "Raghav Laurent " 
        [5]=> string(12) "DARTY Suneep " 
        [6]=> string(22) "GIO Simral " 
    } 
    ["A154"]=> array(0) { } 
        [0]=> array(1) { 
          [0]=> string(17) "NICOLE Lotta " 
    } 
} 

我也有一个被拒绝的用户数组

array(3) { 
    [0]=> string(5) "KENE" 
    [1]=> string(4) "KIRAN" 
    [2]=> string(6) "ATHISA" 
}


预期输出: 如果我迭代我被拒绝的用户数组,例如,对于 KENE Michael ,它必须发送“A057”(第一次出现在用户数组中)

我该如何继续? 我试过 array_search 但什么也没返回

我的代码

$arrayListeAgence = array();
$usersAdded = array();
$arrayDupplicate = array();
for ($i = 0; $i < count($pieces); $i = $i + 2) {
$key = $pieces[$i];
$usersStr = $pieces[$i + 1];
$users = explode('/', $usersStr);
$arrayListeAgence[$key] = array();

for ($j = 0; $j < count($users); $j = $j + 2) {
    $username = $users[$j];
    if (array_search($username, $usersAdded) === false) {
        $arrayListeAgence[$key][] = $username . " " . $users[$j + 1] . " ";
        $usersAdded[] = $username;
    }
    else {
        /*foreach($arrayListeAgence as $key => $val) {
            print($key); // 
            //print_r($val); //
        }*/
        if (array_search($username, $arrayListeAgence) === false) {
            //if we found user in arrayListAgence
            $arrayDupplicate[] = $username.$key;
        }

    }
}

}

var_dump($arrayDupplicate);//$key equal to A154 (I want A057-first occurence found on the main array)

【问题讨论】:

  • 我试过了你的尝试在哪里?
  • 为什么用户数组中有些条目有命名键,而最后一个有数字键?
  • array_search 需要完全匹配,它不会查找子字符串。我认为没有内置函数可以满足您的需求,您只需要编写一个嵌套循环即可。
  • 如何在主数组(用户数组)中进行搜索?
  • 所以让我说清楚...您有一个要迭代的主数组..并与被拒绝的数组进行比较并根据关闭结果查找匹配项?

标签: php arrays matching


【解决方案1】:

您必须在数组上使用 foreach 进行迭代并比较字符串。

【讨论】:

  • 看看我做了什么,我得到了最后一次出现,在我的情况下,我需要保留第一次出现(A057 而不是 A154)。
【解决方案2】:

这个问题是您之前question 的延续。基于这些知识,这里是您问题的答案:

function getAgentForRejectedUser($rejectedUser, $arrayListeAgence)
{
    foreach ($arrayListeAgence as $agent => $users) {
        foreach ($users as $user) {
            $data = explode(' ', $user);
            if ($data[0] == $rejectedUser) {
                return $agent;
            }
        }
    }
    return false;
}

【讨论】:

  • @littleibeix,我要A057(第一次出现的关键)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2011-11-15
相关资源
最近更新 更多