내 문제는 너무 꼬아 서 설명하는 방법조차 모릅니다.변수 변수를 사용하여 배열의 특정 키에 액세스하는 방법
내가 말하자면 여러 개의 조화 된 배열 (항상 같은 배열이 아니라 때때로 제품 배열이 있고 때로는 시장 배열이 있고 때로는 세그먼트 배열이있는 등)도 있습니다. $ 값은 항상 얻을 수있는 유일한 배열입니다!
$values = array ("0" => "1", "4" => "2", "5" => "3");
$products = array ("0" => "1", "1" => "1", "2" => "2", "3" => "1", "4" => "2", "5" => "3");
$markets = array ("0" => "1", "3" => "1", "4" => "2", "5" => "3");
...
키와 일치하는 값을 사용하여 각 배열의 값으로 배열을 작성하고 싶습니다. 나는 foreach는 cicle을 다음
switch ($_POST["cpv_type"]) {
case "pClass":
$keyValue = $_POST["cpv_type"];
$objKey = "this->productClasses";
break;
case "pMarket":
$keyValue = $_POST["cpv_type"];
$objKey = "this->markets";
break;
case "pSegment":
$keyValue = $_POST["cpv_type"];
$objKey = "this->productSegments";
break;
case "pType":
$keyValue = $_POST["cpv_type"];
$objKey = "this->productTypes";
break;
default:
$keyValue = "products";
$objKey = "this->products";
break;
}
을 그리고 :
$myArray = array ("0" => array ("values" => "1", "products" => "1", "markets" => "1"),
"1" => array ("products" => "1"),
"2" => array ("products" => "2"),
"3" => array ("products" => "1", "markets" => "1"),
"4" => array ("values" => "2", "products" => "2", "markets" => 2),
...);
같은 뭔가 나는 이런 식으로 뭔가를 시도했습니다
// all values must be floats
if(!empty($this->value)){
foreach ($this->value as $key => &$curVal){
// if no value has been entered, exclude it and also associated product from validation
if (strlen(trim($curVal)) == 0) {
unset($this->value[$key]);
unset($this->products[$key]);
} else {
// This validates my variable
$curVal = TMS::checkVar($curVal, "dec", $_SESSION["dico"]->_VALUE_, 100, false);
// Store the value on existing array, associating "hoppValue" to the right key entry!
$logDetail[$keyValue][${$objKey}[$key]]["hoppValue"] = $curVal;
}
}
}
내 문제는 변수 변수에 : 방법 변수 문법을 사용하여 $this->productTypes[5]
과 같이 액세스합니까? 나는 모든 var_dumps은 "널 (null)"을 얻을 $$objKey
, ${$objKey}
, ${$objKey}[$key]
, ${$objKey[$key]}
,
$$objKey[$key]
여러분의 도움에 감사드립니다!
'$ objKey = $ this-> productClasses'의 경우 간단히 배열을 가져올 수 있으며'$ objKey [$ key] '로 사용됩니다 – Naumov
당신은 완전히 옳습니다! 대답은 내 눈앞에 너무 간단하고 바로있었습니다. 근무일이 너무 길어서는 안됩니다! (답을 올바르게 달아주세요.) –