[英]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的數組中獲取state
和DeviceId
密鑰的值?
我已經嘗試過了,但是它從另一個數組返回了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.