Php 从数组中获取位置号
如果会话中有以下数组,是否可以在每个[cat]中获取项目位置号:Php 从数组中获取位置号,php,Php,如果会话中有以下数组,是否可以在每个[cat]中获取项目位置号: Array ( [0] => stdClass Object ( [id] => 1 [cat] => 1 [que] => Description here. ) [1] => stdClass Object ( [id] => 2
Array
(
[0] => stdClass Object
(
[id] => 1
[cat] => 1
[que] => Description here.
)
[1] => stdClass Object
(
[id] => 2
[cat] => 1
[que] => Description here.
)
[2] => stdClass Object
(
[id] => 3
[cat] => 1
[que] => Description here.
)
)
例如,下面将给出第二个描述,但如何确定它在[cat]==1中的位置#2(共3个):
$item = $_SESSION['questions'][2]->que;
实际阵列要大得多,并且有超过1个[cat]。我试图获得的计数是每个这样的组。我确信您正在寻找一种更自然的方式,但更糟糕的情况是,您可以添加另一个元素来保存索引值。通过在数组开头添加一个虚拟条目:
array_unshift($_SESSION['questions'], array());
$item = $_SESSION['questions'][2]->que;
什么是位置?
id
或数组索引?您是对的,抱歉,数值实际上是id的值。数组中的项可以动态省略,因此我不想将其与表中存储的任何值绑定。我不知道PHP是否支持此选项,但您可以手动处理。。。你能用计数器循环阵列吗?伪c代码来说明我的想法:int index=0;foreach(数组中的对象行){if(row==this)然后break;index++;}返回索引;虽然我会说,如果你有动态内容,如果你知道你要找的项目,这是一种糟糕的做法(不为任何内容分配空间)。cat、id或您正在搜索的文本。用它来比较。请更清楚地了解senario或示例,我很高兴向您解释更多。
foreach($_SESSION['questions'] as $key=>$val)
{
if($val->id == 3)
echo $key;
}
//or
foreach($_SESSION['questions'] as $key=>$val)
{
if($val->que == "Description here.")
echo $key;
}
//do what ever you want