【发布时间】:2018-12-27 01:44:07
【问题描述】:
我在这里看了很多,我似乎有一些类似的问题,但它们似乎都不适用于我的情况(或者至少我无法让它们起作用),所以希望这是不是完全重复。
我构建了一个如下所示的数组:
Array
(
[0] => Array
(
[article_id] => 1
[article_title] => Article 1
[article_content] => This is some dummy text for the first article.
)
[1] => Array
(
[article_id] => 2
[article_title] => Article 2
[article_content] => This is the content for article #2
)
)
所以数组有 3 个键(article_id、article_title、article_content),而我要做的是在特定索引处获取特定值。
因此,例如,如果页面 url 是
/article.php?id=1
我先把id赋给一个变量:
$linkID = $_GET['id'];
现在我想搜索数组以查找文章 id 匹配项(与 $LinkID 变量匹配):
$foundAtPos = array_search($linkID, array_column($datas, 'article_id'));
这很好用,并给了我一个匹配的“索引”位置,这是一个很好的开始,现在我想将其他两个键值分配给变量(或将它们回显到屏幕上,向我展示我已检索到正确的 id - article_title 值)。
这是我真正陷入困境的部分。我可以轻松地显示数组中的所有值,但我不想这样做。我只想获取与相应 article_id 匹配的特定值。
这是我尝试过的一些事情(不成功):
foreach ($datas as $keyName) {
echo $keyName['article_title'];
}
这给了我所有的文章标题,但这不是我的目标。
这是我从另一个堆栈溢出帖子中得到的,看起来很接近,但我无法正确调整。
foreach($datas as $firstKey => $firstValue) {
echo array_keys($firstValue, $firstValue['article_title'])[0].': '.$firstValue['article_title'].'</br>';
}
同样的问题,给了我所有的数据,而不仅仅是我要检索的行。
所以我已经转了几个小时,这似乎应该是一件很常见的事情,但目前我还没有意识到,所以我很感激各位好人提出的任何建议。
这是我的全部功能,供参考。
if (isset($_GET['id'])) {
$linkID = $_GET['id'];
foreach ($datas as $keyName) {
//echo $keyName['article_title'];
}
//foreach($datas as $firstKey => $firstValue) {
//echo array_keys($firstValue, $firstValue['article_title'])[0].': '.$firstValue['article_title'].'</br>';
//}
//retrieve index of match in array
$foundAtPos = array_search($linkID, array_column($datas, 'article_id'));
print_r($datas[$foundAtPos]);
} else {
header('Location: index.php');
exit();
}
谢谢!
【问题讨论】:
-
试试
echo $datas[$foundAtPos]['article_title'];