如何从3维数组中获取单个变量?

问题描述

我有一些东西我认为是3维数组:

$var = '1,Tony,186|2,Andrea,163|3,Peter,178|4,Sally,172';

因此,变量中包含2个数组。首先以|分隔第二个,

我需要做的是:将它们分开,然后检查名称前的ID,然后给我剩下的一个变量。 我这样尝试过:

<?PHP
$personid = 3;

$var = '1,172';

$array = explode('|',$var);

foreach($array as $values) {
    $arr = explode(",",$values);
    foreach($arr as $value) {
        if($value[0] == $personid) {
        $id = $value[0];
        $name = $value[1];
        $height = $value[2];
        $killloop = 1;
        }
    }
    if($killloop == 1) {
    break;
    }
}

echo 'ID: '.$id.'<br> Name: '.$name.'<br> Height: '.$height;

?>

但是我得到的只是:

ID: 3
Name:
Height: 

有人可以帮忙吗?

解决方法

没有必要循环到第二个数组,您已经定义了位置。 始终使用break语句立即结束循环,这是一个好习惯

<?php
$personid = 3;

$var = '1,Tony,186|2,Andrea,163|3,Peter,178|4,Sally,172';

$array = explode('|',$var);

foreach($array as $values) {
    $arr = explode(",",$values);
    if(!empty($arr) && $arr[0] == $personid){
        $id = $arr[0];
        $name = $arr[1];
        $height = $arr[2];
        break;
    }
}

echo 'ID: '.$id.'<br> Name: '.$name.'<br> Height: '.$height;

?>