[英]Check if index in array exists from string
您是否知道如何測試基於數組傳遞的索引是否存在於數組中?
假設以下代碼:
<?php
$myArray = [
"elemOne" => "valueElemOne",
"elemTwo" => [
"elemTwoOne" => "valueElemTwoOne",
"elemTwoTwo" => [
"elemThreeOne" => "valueElemThreeOne",
"elemThreeTwo" => "valueElemThreeTwo",
],
],
];
現在,我有一個字符串$myString = "elemTwo/elemTwoTwo/elemThreeThree"
。 我想對$myString
進行的操作以某種方式對其進行了格式化,因此我可以檢查
<?php
if(isset($myArray['elemTwo']['elemTwoTwo']['elemThreeThree'])) {
// maybe do something
return true;
} else {
return false;
}
在我的情況下,這自然會返回false,因為數組中不存在索引"elemThreeThree"
。 我嘗試拆分字符串,嘗試將其格式化為[elemTwo][elemTwoTwo][elemThreeThree]
,然后對其求值,但實際上沒有任何效果。
您是否認為有可能對我有所幫助的方法?
簡單的解決方案可能是
<?php
$arr = array('hello'=>array('world'=>array('in'=>'jo')));
$myString = "hello/world/inf";
function checkString($string, array $search_array) {
$test = explode('/',$string);
foreach($test as $key) {
if(isset($search_array[$key])) $search_array = $search_array[$key];
else return false;
}
return true;
}
var_dump(checkString($myString,$arr));
die;
函數的輸出為true或false
為什么拆分不起作用? 這有什么問題嗎?
<?php
$arrayTest = array(
"arrayOne" => "string",
"arrayTwo" => array(
"arrayThree" => "string",
"arrayFour" => array("winner" => "me")
)
);
var_dump(expanded_key_exists($arrayTest, "arrayOne"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayThree"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayThree/arrayTwenty"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayFour"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayFour/winner"));
if(expanded_key_exists($arrayTest, "arrayTwo/arrayFour/winner")){
echo "The winner is: " . expanded_array_key($arrayTest, "arrayTwo/arrayFour/winner");
}
function expanded_key_exists($array, $key){
$arrayKeys = explode("/", $key);
foreach($arrayKeys as $someKey){
if(is_array($array) && array_key_exists($someKey, $array)){
$array = $array[$someKey];
}else{
return false;
}
}
return true;
}
function expanded_array_key($array, $key){
$arrayKeys = explode("/", $key);
foreach($arrayKeys as $someKey){
if(is_array($array) && array_key_exists($someKey, $array)){
$array = $array[$someKey];
}else{
return null;
}
}
return $array;
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.