如果你有一个关联数组:
Array
(
[uid] => Marvelous
[status] => 1
[set_later] => Array
(
[0] => 1
[1] => 0
)
[op] => Submit
[submit] => Submit
)
你想要访问第二项,你会怎么做? $arr[1]
似乎无效:
foreach ($form_state['values']['set_later'] as $fieldKey => $setLater) {
if (! $setLater) {
$valueForAll = $form_state['values'][$fieldKey];
$_SESSION[SET_NOW_KEY][array_search($valueForAll, $form_state['values'])] = $valueForAll; // this isn't getting the value properly
}
}
这段代码应该产生:
$_SESSION[SET_NOW_KEY]['status'] = 1
但它只会产生一个空白条目。
答案 0 :(得分:62)
$second = array_slice($array, 1, 1, true); // array("status" => 1)
// or
list($value) = array_slice($array, 1, 1); // 1
// or
$blah = array_slice($array, 1, 1); // array(0 => 1)
$value = $blah[0];
答案 1 :(得分:15)
我有点困惑。您的代码似乎没有正确的数组键。但是,如果您只想获取数组中的第二个元素,可以使用:
$keys = array_keys($inArray);
$key = $keys[1];
$value = $inArray[$key];
然而,在考虑了你想要做的事情之后,这样的事情可能会更好:
$ii = 0;
$setLaterArr = $form_state['values']['set_later'];
foreach($form_state['values'] as $key => $value) {
if($key == 'set_later')
continue;
$setLater = $setLaterArr[$ii];
if(! $setLater) {
$_SESSION[SET_NOW_KEY][$key] = $value;
}
$ii ++;
}
这有帮助吗?如果未设置set_later值,您似乎正在尝试设置会话值。上面的代码就是这样做的。但是,它不是遍历内部数组,而是遍历外部数组并使用索引来跟踪它在内部数组中的位置。这应该是合理的。
答案 2 :(得分:5)
您可以使用array_slice
获取第二项:
$a= array(
'hello'=> 'world',
'how'=> 'are you',
'an'=> 'array',
);
$second= array_slice($a, 1, 1, true);
var_dump($second);
答案 3 :(得分:2)
以下是使用array_slice和current
执行此操作的单行方式$value = current(array_slice($array, 1, 1)); // returns value only
答案 4 :(得分:0)
如果您在第一个示例中提供的数组对应于$ form_state,则
$form_state['values']['set_later'][1]
会奏效。
否则
$i = 0;
foreach ($form_state['values']['set_later'] as $fieldKey => $setLater) {
if ($i == 1) {
$valueForAll = $form_state['values'][$fieldKey];
$_SESSION[SET_NOW_KEY][$fieldKey] = $setLater;
continue;
}
$i++;
}
答案 5 :(得分:0)
这里的每一个响应都集中在获取第二个元素,独立于阵列的形成方式。
如果是这种情况。
Array
(
[uid] => Marvelous
[status] => 1
[set_later] => Array
(
[0] => 1
[1] => 0
)
[op] => Submit
[submit] => Submit
)
然后您可以通过$array['status']
获取第二个元素的值。
此代码
foreach ($form_state['values']['set_later'] as $fieldKey => $setLater) {
if (! $setLater) {
$valueForAll = $form_state['values'][$fieldKey];
$_SESSION[SET_NOW_KEY][array_search($valueForAll, $form_state['values'])] = $valueForAll; // this isn't getting the value properly
}
}
我不明白你想做什么,小心解释一下?
答案 6 :(得分:0)
Vue.extend