从1个特定项目的多维数组中获取信息

时间:2016-02-08 10:03:25

标签: php arrays multidimensional-array

我有一个具有这种结构的数组:

0 => 
    array (size=19)
      'ArticleId' => int 10042  
      'Eanbarcode' => string '0000000010042' (length=13)
      'Brand' => string 'Lazzo' (length=5)
      'Season' => string 'SS16' (length=4)
      'Subseason' => string '' (length=0)

1 => 
    array (size=19)
      'ArticleId' => int 10043
      'Eanbarcode' => string '0000000010043' (length=13)
      'Brand' => string 'Lazzo' (length=5)
      'Season' => string 'SS16' (length=4)
      'Subseason' => string '' (length=0)

现在我想使用ArticleId来获取该文章的所有产品信息。我想我首先需要在文章中找到正确的密钥编号,然后从密钥中获取信息,但我无法弄清楚如何操作。

2 个答案:

答案 0 :(得分:1)

您可以使用foreach循环处理整个数组,然后挑出每个ArticleId

foreach ( $array as $article ) {
    $articleId = $article['ArticleId'];

    // do something with the ArticleId
}

答案 1 :(得分:1)

使用当前代码的方法是做这样的事情......

function getArticle($articleIdToFind, $articles) {
    foreach ($articles as $article) {
        $articleId = $article['ArticleId'];
        if ($articleId == $articleIdToFind) {
            return $article;
        }
    }
    return null;
}

这似乎有点浪费,因为你每次都必须迭代整个文章数组。更好的方法是组织文章数组,使数组键是文章ID。例如...

加载文章时,请执行以下操作:

$articles = array();
$articlesResultSet; // Imagine this is an array of results that have just been fetched from the database.
foreach ($articlesResultSet as $a) {
    $articles[$a['ArticleId']] = $a;
}

然后你有$articles数组键是文章ID。这将getArticle函数转换为以下....

function getArticle($articleIdToFind, $articles) {
    $result = null;
    if (array_key_exists($articleIdToFind, $articles)) {
        $result = $articles[$articleIdToFind];
    }
    return $result;
}