在php中显示数组块
我试图显示元素所在的数组的特定块 例如,假设这是我的数组在php中显示数组块,php,arrays,Php,Arrays,我试图显示元素所在的数组的特定块 例如,假设这是我的数组 Array ( [0] => Array ( [1] => a [2] => b [3] => c [4] => d [5] => e ) [1] => Array (
Array
(
[0] => Array
(
[1] => a
[2] => b
[3] => c
[4] => d
[5] => e
)
[1] => Array
(
[6] => f
[7] => g
[8] => h
[9] => i
[10] => j
)
)
例如,如何在数组中搜索第10个键,并仅选择其所在的块
编辑
谢谢你的回答,但是我不需要函数,所以我想出了这个简单的解决方案,我想:
$temp1 = array_chunk($cart_items, 5,true);
foreach ($temp1 as $key => $value) {
foreach ($value as $key2 => $value2) {
if($key2 == $itemid){
$c_id = $key;
}
else{
}
}
}
您可以使用一个小函数来搜索数组,找到第10个键并返回“chunk”-我们实际上是在为您的chunk查找键,但是您可以使用该键仅加载此chunk
function findChunk($haystack, $needle){
foreach($haystack as $key => $value){
if(array_key_exists($needle, $value))
return $key;
}
return false;
}
因此,您将拥有一个密钥,并在原始阵列上使用该密钥:
$chunk = $original_array[$key_from_function];
你想要这样:
function find_chunk($arr, $find_value){
if( !is_array($arr) && count($arr) == 0) return false;
foreach($arr as $k=>$v) {
if( is_array($v) && count($v) > 0 ) {
foreach($v as $i=>$j) if ($i == $find_value) return $k;
}
}
return false;
}
$arr = array_chunk(range(1, 10), 5, true);
print_r($arr);
echo 'Chunk is:' . find_chunk($arr, 9);
这是递归解决方案,以防可能存在子阵列 它确实有一个缺陷,那就是它直接在函数中打印数组,而不是返回密钥。但如果需要,这应该是可以解决的
$array = array(
array(
'a', 'b', 'c', 'd', 'e'
),
array(
'f', 'g', 'h', 'i', 'j', array(
'k1', 'k2', 'k3',
),
),
array(
'x', 'y', 'z'
)
);
function displayChunk($array, $nthElement, &$counter) {
if(!is_array($array)) {
return false;
}
$counter += count($array);
if($counter >= $nthElement) {
print_r($array);
return true;
}
foreach($array as $subArray) {
if(displayChunk($subArray, $nthElement, $counter) === true) {
return true;
}
}
}
$counter = 0;
displayChunk($array, 12, $counter);
警告:我对PHP非常陌生(几周前开始了一段时间) 这个怎么样:
function findChunks($array, $key){
return array_filter($array, function($subArray) use ($key){
return array_key_exists($key, $subArray);
});
}
$chunks = findChunks($a, 10);
var_dump($chunks);
注意:如果有多个块中有相同的键,这将返回多个块(这完全可能,取决于您的数据结构)
如果您确实只想要匹配的第一个块,array\u filter()
可能做了太多的工作,因为无论您是否需要,它都会遍历整个外部数组。这可能取决于阵列的大小
如果性能比意图的清晰更重要,那么使用更传统的条件循环可能更合适。您是否尝试过
array\u search()
?