[英]PHP recursive array_search
從下面的代碼中,我可以比較 2 arrays 並找出$array
中的$subset
元素 position 范圍。
$array = [8,2,3,7,4,6,5,1,9];
$subset = [6,3,7];
function get_range($array, $subset)
{
$min = sizeof($array);
$max = 0;
foreach($subset as $value) {
$occurrence = array_search($value, $array);
if( $occurrence < $min ) {
$min = $occurrence;
}
if( $occurrence > $max ) {
$max = $occurrence;
}
}
return [$min, $max];
}
$range = get_range($array, $subset); // result as an array -> [2, 5]
但是,我想對我的多維數組進行遞歸array_search
,例如:
$subset = array (
array(6,3,7),
array(4,2,9),
array(3,5,6),
);
我怎樣才能做到這一點? 預期結果 -> [2, 5], [1, 8], [2, 6]
。
這里不需要遞歸,只需在get_range()
function 中添加一個額外的loop
。 以下示例基於您的代碼,是您問題的可能解決方案:
<?php
$array = [8,2,3,7,4,6,5,1,9];
$subsets = array (
array(6,3,7),
array(4,2,9),
array(3,5,6),
);
function get_range($array, $subsets)
{
$result = array();
foreach ($subsets as $subset) {
$min = sizeof($array);
$max = 0;
foreach($subset as $value) {
$occurrence = array_search($value, $array);
if( $occurrence < $min ) {
$min = $occurrence;
}
if( $occurrence > $max ) {
$max = $occurrence;
}
}
$result[] = [$min, $max];
}
return $result;
}
$range = get_range($array, $subsets);
echo print_r($range, true);
?>
結果:
Array (
[0] => Array ( [0] => 2 [1] => 5 )
[1] => Array ( [0] => 1 [1] => 8 )
[2] => Array ( [0] => 2 [1] => 6 )
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.