2010-06-17 61 views
5

我有一个数据结果集,我想要写入数组在php中。这里是我的样本数据:在PHP数组中添加2个值到1个键

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

使用这些数据,我想在PHP中创建一个数组,它是以下内容:

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

我试图array_push($值,“名”,'缩写“)[伪代码],这给了我如下:

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

我需要做一个查找对这个数组来获得相同的密钥值,如果我查查‘迈克’或‘M’。

将我的结果集写入上面设置的数组中的最佳方式是什么?名称和缩写共享相同的密钥?

回答

14

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"] 

的技巧是使用一个嵌套的数组配对的名称和缩写每个条目。

-3

必须为键和Mike和M设置相同的值。

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

这就是说,我不确定你为什么单独存储数据。初始可以通过substr($name, 0, 1)直接从名称中获取。

+0

基本上冗余信息,他说,你需要使用一个多维数组。数据数组应包含数字作为键和数组作为值。作为值的数组包含一个键中的名称和另一个键中的值。这两个键应该是预定义的(0和1 /名称和初始/ n和我/等)。 – Tom 2010-06-17 22:07:44

+0

感谢您直接提取缩写的建议,但您的建议仅适用于我的简化样本集。这个建议不适用于我的真实数据集,因为缩写实际上是更多的字符,并不总是在名称内的字符集内。 – 2010-06-18 14:40:35

-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 
) 
0

您可以使用两个单独的阵列,也许像:

$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'); 

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

+0

PS:键在PHP中以零开头(与大多数语言一样),因此第一个键 - 值对将具有键0;第二个键值对将具有键1;第三个键值对将具有键2;等等 – Tom 2010-06-17 22:13:22

2

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

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

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

也许你创建了一个简单的类的缩写是在您的情况

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/>"; 
}