[英]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.