簡體   English   中英

PHP數組。 通過數組從數組中獲取價值

[英]PHP Arrays. Get value from array with arrays

我在PHP中有數組:

Array
(
  [1] => Array
    (
        [DeviceName] => Device1
        [DeviceId] => 0x0000001530A1B380
        [state] => 0
        ...
         )
  [2] => Array
    (
        [DeviceName] => Device2
        [DeviceId] => 0x0000001530A10C80
        [state] => 1
        ...
    )
  [3] => Array
    (
        [DeviceName] => Device3
        [DeviceId] => 0x0000001531471600
        [state] => 0
        ...
    )
  ...
)

如何僅從DeviceName = Device2的數組中獲取stateDeviceId密鑰的值?

我已經嘗試過了,但是它從另一個數組返回了deviceID

foreach ($values as $B) {
    $B = preg_replace('~[\r\n]+~', '', $B);
    if ($B['DeviceName'] == $Device) {
        print "Device ID: ".$B['DeviceId']."\n";
    }
}

您可以簡單地使用每個循環使用它

foreach ($array as $row) {
  if ($row['DeviceName'] == 'Device2') {
    echo $row['DeviceId'];
    echo $row['state'];
  }
}

這是根據您的陣列的活鏈接鏈接

function findDeviceAndState($arr,$deviceName){
    foreach($arr as $sample){
        if($sample['DeviceName']==$deviceName){
            return array($sample['DeviceName'],$sample['state']);
         }
    }
    return null;
}

在代碼調用函數中,並假設您的數組名稱為$values並假設您只有一個名稱為Device2設備

if(($result=findDeviceAndState($values,'Device2'))!=null){
 echo 'DeviceName: '.$result[0];
 echo 'State : '.$result[1]; 
}else{
 die("Device not found!");
}

假設DeviceName是唯一的,則可以提取數組值並通過DeviceName對其進行索引:

$result = array_column($values, null, 'DeviceName');
echo $result['Device2']['state'];

由於您要分配$B ,因此應通過引用將其傳遞:

 foreach($values as &$B)

有幾種方法可以做到這一點。 我可能會使用一個函數來返回搜索結果數組。 如果希望找到Device2多個實例,則需要遍歷數組並查找匹配的結果。

function findDevice2(array $devices) : array
{
    $results = [];
    foreach ($devices as $device) {
        if ($device['DeviceName'] == 'Device2') {
            $format = [
                'DeviceId' => $device['DeviceId'],
                'state' => $device['state']
            ];
            array_push($results, $format);
        }
    }
    return $results;
}

$foundSet = findDevice2($array);

var_dump($foundSet);

此函數接受傳入的數組,遍歷每條記錄以查找DeviceName為Device2。 找到后,它將DeviceId和State推入結果數組以返回。 這樣,您最終只能得到所需結果的數組。

array(1) {
  [0] =>
  array(2) {
    'DeviceId' =>
    string(18) "0x0000001531471600"
    'state' =>
    int(0)
  }
}

如果您未使用PHP 7.0+,則只需從函數中刪除類型聲明即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM