在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()