简体   繁体   English

PHP关联数组通过键获取值

[英]PHP associative array get value by key

I have an assiciative multidenentional array, what I am tring to do is to receive a value by key name. 我有一个关联的多数组,我打算做的是通过键名接收一个值。 for example, when I will write $call['NAME'] I will get the key value 例如,当我写$call['NAME']我会得到键值

this is may array: 这可能是数组:

Array
(
    [0] => stdClass Object
        (
            [ID] => 15678996
            [START] => 2016-10-07 10:33:08
            [END] => 2016-10-07 10:39:16
            [NAME] => פרי גנך
            [CALLERID] => 0504446349
            [CALLEE] => 089975757
            [O_EXTEN] => 1
            [EXTEN] => 1
            [SUPERID] => 49256
            [CUSTID] => 320748
            [PRICE] => 0.0
            [ANS_TIME] => 2016-10-07 10:33:09
            [DISPOSITION] => ANSWER
            [DURATION] => 367
            [INCOME] => 0.00
            [PR_NUMBER] => 723924039
            [CONCATENATION] => 320748,ANSWER;
            [OUTERID] => 
        )

    [1] => stdClass Object
        (
            [ID] => 15677268
            [START] => 2016-10-07 08:53:47
            [END] => 2016-10-07 08:54:21
            [NAME] => פרי גנך
            [CALLERID] => 0544300515
            [CALLEE] => 089975757
            [O_EXTEN] => 1
            [EXTEN] => 1
            [SUPERID] => 49256
            [CUSTID] => 320748
            [PRICE] => 0.0
            [ANS_TIME] => 2016-10-07 08:53:48
            [DISPOSITION] => ANSWER
            [DURATION] => 33
            [INCOME] => 0.00
            [PR_NUMBER] => 723924039
            [CONCATENATION] => 320748,ANSWER;
            [OUTERID] => 
        )
)

What i want to achieve is to echo each value by writing his key name. 我要实现的是通过写他的键名来回显每个值。

the main array is called $all_calls this is what i havee done so far: 主数组称为$all_calls这是我到目前为止所做的:

foreach($all_calls as $call ){
  foreach ($call as $key => $value){
    echo '<b>Key</b> '.$key .': <b>Value</b> '. $value;
  }
}

what am i missing here? 我在这里想念什么?

Try this $keys = array("ID","START", "END", "NAME", "CALLERID" ); 试试这个$ keys = array(“ ID”,“ START”,“ END”,“ NAME”,“ CALLERID”);

$myarray = array
(
array
    (
        "ID" => "15678996",
        "START" => "2016-10-07 10:33:08",
        "END" => "2016-10-07 10:39:16",
        "NAME" => "Myname",
        "CALLERID" => "0504446349"

    )
,
array
    (
         "ID" => "15678997",
        "START" => "2016-10-07 10:33:08",
        "END" => "2016-10-07 10:39:16",
        "NAME" => "Myname2",
        "CALLERID" => "0504446348"
    )
) ;


//print_r($myarray);

foreach ( $myarray as $array ){
foreach($keys as $key ){
    echo $array[$key];
    echo "<br/>";
}
}

try this 尝试这个

function toArray($obj)
{
    if (is_object($obj)) $obj = (array)$obj;
    if (is_array($obj)) {
        $new = array();
        foreach ($obj as $key => $val) {
            $new[$key] = toArray($val);
        }
    } else {
        $new = $obj;
    }

    return $new;
}
$all_calls = toArray($all_calls);
foreach($all_calls as $call ){
   foreach ($call as $key => $value){
      echo '<b>Key</b> '.$key .': <b>Value</b> '. $value;
   }
}

as you are getting object inside the array so you need to convert it fully to an array and then loop through. 当您在数组内获取对象时,需要将其完全转换为数组,然后循环遍历。

Just replace foreach loop by this 只需用这个替换foreach循环

foreach($all_calls as $call ){
$call=get_object_vars($call);
foreach ($call as $key => $value){
echo '<b>Key</b> '.$key .': <b>Value</b> '. $value;
}
}

you can get value by using this given code also:- 您还可以通过使用以下给定的代码来获得价值:

$count=count($all_calls);
for($i=0; $i<$count; $i++){
$cell=$all_calls[$i];
echo $cell->NAME;
echo $cell->CALLERID;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM