在PHP中从多值数组中查找键

在PHP中从多值数组中查找键,php,arrays,key,Php,Arrays,Key,我试图找到其中一个子项存在于中的密钥。我有这个数组 $stdCurl = array( 'homepage' => array('', '/', 'index.php', 'home', 'arxiki'), 'blog' => array('αρθρα', 'blog'), 'post' => array('αρθρο', '*post'), 'products' => array('προιοντα', '

我试图找到其中一个子项存在于中的密钥。我有这个数组

$stdCurl    = array(
    'homepage'  => array('', '/', 'index.php', 'home', 'arxiki'),
    'blog'      => array('αρθρα', 'blog'),
    'post'      => array('αρθρο', '*post'),
    'products'  => array('προιοντα', 'products'),
    'product'   => array('προιον', 'product'),
    'portfolio' => array('portfolio', 'έργα'),
    'project'   => array('project', 'έργο')
);
用户已选择“post”值(用*标记)。现在我想找到“post”属于哪个键。我尝试了数组搜索,但无法使其工作..我不习惯循环,我想知道是否有任何内置函数用于此数组

编辑__

基本上我找到了我的代码的答案,我只是没有发布它,因为我想知道是否真的有任何方法可以做到这一点。。 我之所以要这样做,是因为我解析了url,想看看url中是否存在任何关键字“index.php”、“home”、“product”等,如果它们存在,我想得到这些关键字所属的部分

假设url是
http://domain.gr/gear-s3-samsung/product
。我解析url并在“/”上分解它,现在我想知道是否存在关键字,如果存在关键字,请从$stdCurl数组返回关键字所在的关键字

foreach($this->stdCurl as $key => $value):
    foreach($value as $definedSection):
        if(in_array($definedSection, $this->urlStructure)):
            $this->pageKey = $key;
            $this->pageSection = $definedSection;
        else:
            continue;
        endif;
    endforeach;
endforeach;

现在我得到$key并显示关键字存在的部分..但是我想知道如果我给你值“αρθρο”,我怎么才能得到“post”键?

你可以结合使用
函数。片段:

$needle = 'αρθρο';
$pageKey = key(array_filter($stdCurl, function ($val) use ($needle) {
    return in_array($needle, $val);
}));

我的理解是:为内部数组搜索找到“键”

代码:

<?php

$stdCurl    = array(
  'homepage'  => array('', '/', 'index.php', 'home', 'arxiki'),
  'blog'      => array('αρθρα', 'blog'),
  'post'      => array('αρθρο', '*post'),
  'products'  => array('προιοντα', 'products'),
  'product'   => array('προιον', 'product'),
  'portfolio' => array('portfolio', 'έργα'),
  'project'   => array('project', 'έργο')
);

function array_search_key ($array, $val) {
  if (!is_array($array)){
    return false;
  }

  foreach ($array as $key => $inner_array) {
    if(in_array($val, $inner_array)){
      return $key;
    }
  }
  return false;
}

$key = array_search_key($stdCurl, 'προιον');

echo $key; //product

?>

快速查看:

<?php

$stdCurl    = array(
  'homepage'  => array('', '/', 'index.php', 'home', 'arxiki'),
  'blog'      => array('αρθρα', 'blog'),
  'post'      => array('αρθρο', '*post'),
  'products'  => array('προιοντα', 'products'),
  'product'   => array('προιον', 'product'),
  'portfolio' => array('portfolio', 'έργα'),
  'project'   => array('project', 'έργο')
);

function array_search_key ($array, $val) {
  if (!is_array($array)){
    return false;
  }

  foreach ($array as $key => $inner_array) {
    if(in_array($val, $inner_array)){
      return $key;
    }
  }
  return false;
}

$key = array_search_key($stdCurl, 'προιον');

echo $key; //product

?>

  • 请提供预期结果和您已经尝试过的任何代码,然后向我们展示预期结果,至少要找到“αρθρο”所在数组的键?没有循环..我不想循环..我想要数组搜索/数组差异..总之,我的错,我找到了答案..谢谢