我有一個多維陣列,它有鍵,鍵有值,或者有另一個帶有鍵和值的陣列,所以我想按鍵搜索,但在輸入中,如 230 是用戶輸入,如果結果是一個值,它將依次為 3 然后 4 然后 1但不是陣列,它必須列印像 input = 230 結果應該是 = "3-4-1" 這樣的值,所以我需要 str_split 數字并按 1 搜索它,如果第一個數字是陣列,然后尋找第二個型別 edit1 = I找到了拆分密鑰的方法
//edit1
$keys = "021";
$keysSplit =str_split($keys, strlen($keys)/strlen($keys));
echo $keys[0];
//edit 1 ends
$arr = [0 => [0=>"1-1", 1 => "1-2" , 2=>"1-3", 3=>[0=>"1-4-1", 1 => "1-4-2" , 2=>"1-4-3"]],
1 => [0=>"2-1", 1 => "2-2" , 2=>"2-3"],
2 => [0=>"3-1", 1 => "3-2" , 2=>"3-3", 3=>[0 =>"3-4-1" , 1=> "3-4-2"]],
];
$keys = "021";
function searchByKey($array , $keys){
$result = [];
$keys = "021";
$keys =str_split($keys, strlen($keys)/strlen($keys));
$key1 = $keys[0];
$key2 = $keys [1];
$key3 = $keys [2];
foreach ($array as $key1 => $value){
if (is_array($value)){
$key1 = null;
$key1 = $key2;
$key2 = $key3;
return searchByKey($value , $key1);
}
else {
$result=$value;
echo $result;
}
}
}
$arr = searchByKey($arr, $keys);
該函式僅作為給定的鍵和值起作用,它會在它首先詢問的鍵上列印每個鍵和值,所以這不是我想做的事情,有人可以幫忙解釋一下嗎?@Anggara 給出的答案我讓它發揮作用;
$input = "11";
function searchByNumber($array, $input){
$result = $array;
for ($i = 0; $i < strlen($input); $i ) {
if (is_array($result)) {
$result = $result[$input[$i]];
} else {
$result = "Does not exists";
break;
}
}
echo $result;
}
$arr = searchByNumber($arr, $input);
uj5u.com熱心網友回復:
您可以像訪問陣列一樣訪問字串中的字符。例如:
$input = "230";
// $input[0] is "2"
// $input[1] is "3"
// $input[2] is "0"
所以我的方法是回圈輸入鍵中的每個字符,并在$arr. 每次迭代都會將找到的陣列元素設定為變數$result。如果搜索到的鍵不存在(例如:“021”),則列印錯誤訊息。
<?php
$arr = [
0 => [
0 => "1-1",
1 => "1-2",
2 => "1-3",
3 => [
0 => "1-4-1",
1 => "1-4-2",
2 => "1-4-3"
]
],
1 => [
0 => "2-1",
1 => "2-2",
2 => "2-3"
],
2 => [
0 => "3-1",
1 => "3-2",
2 => "3-3",
3 => [
0 => "3-4-1",
1 => "3-4-2"
]
],
];
$input = "230";
$result = $arr;
for ($i = 0; $i < strlen($input); $i ) {
if (is_array($result)) {
$result = $result[$input[$i]];
} else {
$result = 'Can not traverse path';
break;
}
}
echo $result;
uj5u.com熱心網友回復:
拆分密鑰后
for($i=0;$i<strlen($keys);$i ){
$arr = $arr[$keys[$i]];
}
if(is_array($arr)){
echo json_encode($arr);
}else{
echo $arr;
}
您需要一個回圈,它將一個一個地遍歷鍵并分配到陣列中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364878.html
上一篇:如何在C中檢查字串是否包含某個值
下一篇:根據給定的索引替換陣列的某些元素
