在PHP数组中为1个键添加2个值

时间:2010-06-17 21:54:11

标签: php arrays

我有一个数据结果集,我想写入php中的数组。这是我的示例数据:

**Name** **Abbrev**
Mike     M
Tom      T
Jim      J

使用该数据,我想在php中创建一个具有以下内容的数组:

1|Mike|M
2|Tom|T
3|Jim|j

我尝试了array_push($ values,'name','abbreviation')[伪代码],它给了我以下内容:

1|Mike
2|M
3|Tom
4|T
5|Jim
6|J

如果我查看“Mike”或“M”,我需要查看此数组以获取相同的键值。

将结果集写入上面设置的数组的最佳方法是什么,其中name和abbreviation共享相同的键?

7 个答案:

答案 0 :(得分:17)

PHP不是我的顶级语言,但请尝试以下方法:

array_push($values, array("Mike", "M"))
array_push($values, array("Tom", "T"))
array_push($values, array("Jim", "J"))

$name1 = $values[1][0]
$abbrev1 = $values[1][1]

或:

array_push($values, array("name" => "Mike", "abbrev" => "M"))
array_push($values, array("name" => "Tom", "abbrev" => "T"))
array_push($values, array("name" => "Jim", "abbrev" => "J"))

$name1 = $values[1]["name"]
$abbrev1 = $values[1]["abbrev"]

诀窍是使用嵌套数组来配对每个条目中的名称和缩写。

答案 1 :(得分:5)

$person = array('name' => 'Mike', 'initial' => 'M');
array_push($people, $person);

那就是说,我不确定你为什么要单独存储数据。可以通过substr($name, 0, 1)直接从名称中提取首字母。

答案 2 :(得分:2)

您需要创建一个二维数组来存储多个值。

结果集中的每一行都是一个数组,因此需要将它作为数组添加到变量中。

array_push($values, array('name', 'abbreviation'));

答案 3 :(得分:1)

你可以使用两个独立的数组,可能是:

$values_names = array();
$values_initials = array();
array_push($values_names, 'Mike');
array_push($values_initials, 'M');
array_push($values_names, 'Tom');
array_push($values_initials, 'T');
array_push($values_names, 'Jim');
array_push($values_initials, 'J');

因此,您使用两个数组,第一列和第三列各一个,使用第一列中的值作为两个数组的键。

答案 4 :(得分:1)

也许您为此创建了一个简单的类,因为缩写是您案例中的冗余信息

class Person
{
    public $name;

    pulbic function __construct($name)
    {
        $this->name = (string)$name;
    }

    public function getAbbrev()
    {
        return substr($this->name, 0, 1);
    }

    public function __get($prop)
    {
        if ($prop == 'abbrev') {

            return $this->getAbbrev();
        }
    }
}


$persons = array(
    new Person('Mike'),
    new Person('Tom'),
    new Person('Jim')
);

foreach ($persons as $person) {

   echo "$person->name ($person->abbrev.)<br/>";
}

答案 5 :(得分:-1)

php数组的工作方式类似于哈希查找表,因此为了获得所需的结果,您可以初始化2个键,一个具有实际值,另一个具有指向第一个的引用。例如,你可以这样做:

$a = array('m' => 'value');
$a['mike'] = &$a['m']; //notice the end to pass by reference

如果您尝试:

$a = array('m' => 'value');
$a['mike'] = &$a['m'];

print_r($a);

$a['m'] = 'new_value';
print_r($a);

$a['mike'] = 'new_value_2';
print_r($a);

输出将是:

Array
(
    [m] => value
    [mike] => value
)
Array
(
    [m] => new_value
    [mike] => new_value
)
Array
(
    [m] => new_value_2
    [mike] => new_value_2
)

答案 6 :(得分:-3)

必须为Mike和M设置相同的值才能获得密钥。