2011-10-30 60 views
6

Tôi đang cố gắng tạo một mảng liên kết và sau đó trong cuộc gọi thứ hai, gán cho nó nhiều giá trị khác nhau trên một khối. Tôi muốn làm theo mẫu này giống như trong instantiation:Thêm nhiều giá trị vào một mảng kết hợp trong PHP trong một cuộc gọi

"variable" = > 'value'; 

instantiation của tôi là:

$post_values = array(
    "x_login"   => "API_LOGIN_ID", 
    "x_tran_key"  => "TRANSACTION_KEY", 
); 

Tôi muốn nói thêm:

"x_version"   => "3.1", 
"x_delim_data"  => "TRUE", 
"x_delim_char"  => "|", 
"x_relay_response" => "FALSE", 
"x_state"   => "WA", 
"x_zip"    => "98004" 

lựa chọn của tôi là gì ? Có lẽ có một cách sử dụng array_push mà tôi không biết về để thêm nhiều giá trị dễ dàng hơn? Hoặc tôi có bị thêm giá trị cho mỗi cuộc gọi như:

$post_values['x_version']='3.1'; 
.... 
$post_values['x_zip']='98004'; 

Có cách nào khác để thêm nhiều giá trị vào một mảng kết hợp trong một dòng không?

+0

'array_push ($ post_values, array ("x_version" => "3.1", ...) ' ? – str

+0

xem câu trả lời có liên quan [trong một cuộc gọi] tại đây :: @the bottom ;; http://stackoverflow.com/questions/6123122/how-to-push-hash-into-array-of-hash-in-php –

Trả lời

1

Bạn có thể thử bằng cách sử dụng chức năng sau: array_merge

6

Hãy thử điều này:

$post_values = array( 
    "x_login"   => "API_LOGIN_ID", 
    "x_tran_key"  => "TRANSACTION_KEY", 
); 

$array2 = array(
    "x_version"   => "3.1", 
    "x_delim_data"  => "TRUE", 
    "x_delim_char"  => "|", 
    "x_relay_response" => "FALSE", 
    "x_state"   => "WA", 
    "x_zip"    => "98004" 
); 

$result = $post_values + $array2; 

Thận trọng tuy nhiên: Nếu khóa đã tồn tại trong $ post_values ​​nó sẽ không được ghi đè.

+1

Dường như array_merge ghi đè, trong đó + có cùng chức năng nhưng không ghi đè lên . OK, cảm ơn :) – ViviDVasT

+1

Bạn cũng có thể sử dụng toán tử '+ =' như vậy '$ post_values ​​+ = ['x_version' => '3.1', 'x_zip' => 98004];' –

2

array_push() sẽ chấp nhận một mảng được đẩy.
Nhưng array_merge() có thể nhiều hơn những gì bạn muốn.

2

Để giữ cho mọi thứ tốt đẹp và sạch sẽ và trong trường hợp này, đơn giản, bạn có thể được tốt hơn bằng cách sử dụng array_merge()

Cá nhân tôi tuyên bố bất kỳ mảng ở phía trên cùng của tập tin lớp học của tôi, để làm cho họ truy cập trên toàn cầu Tôi chỉ có một ví dụ có thể giúp bạn, đó là một cái gì đó phù hợp với tôi khi cần thêm/kết hợp hai mảng lại với nhau:

protected $array1 = array (
    'basic' => '1', 
    'example' => '2', 
    'for'  => '3' 
); 

protected $array2 = array(
    'merging'  => '4', 
    'two'   => '5', 
    'associative' => '6', 
    'arrays'  => '7', 
    'mate'  => '8' 
); 

Sau đó, trong tập tin lớp học của bạn, bạn có thể sử dụng các mảng hoặc bất kỳ mảng tạo và hợp nhất bất cứ khi nào bạn muốn:

public function ExampleOne() 
{ 
    $firstArray = $this->array1; 
    print_r($firstArray); 

    $secondArray = $this->array2; 
    print_r($secondArray); 

    $merged = array_merge($firstArray, $secondArray); 
    print_r($merged); 
} 

Mỗi print_r() sẽ cung cấp cho bạn một bản in ra trong giao diện điều khiển các dữ liệu/mảng tạo ra. Điều này là để bạn có thể tự mình xem mọi thứ đã được tạo chính xác và mỗi khóa có giá trị liên quan của nó (kiểm tra các trang hướng dẫn PHP để có giải thích dứt khoát của print_r()).

Vì vậy, các mảng đầu tiên sẽ/nên giới thiệu này:

Array 
(
    [basic] => 1 
    [example] => 2 
    [for]  => 3 
) 

Mảng thứ hai sẽ/nên giới thiệu này:

Array 
(
    [merging]  => 4 
    [two]   => 5 
    [associative] => 6 
    [arrays]  => 7 
    [mate]  => 8 
) 

Và array_merge() hoạt động sẽ tạo ra các mảng thức, sẽ hiển thị/sẽ hiển thị điều này:

Array 
(
    [basic]  => 1 
    [example]  => 2 
    [for]   => 3 
    [merging]  => 4 
    [two]   => 5 
    [associative] => 6 
    [arrays]  => 7 
    [mate]  => 8 
) 

Tất nhiên, bạn không phải lúc nào cũng phải đặt/tạo mảng của mình ays ở trên cùng của tệp lớp và khi cần bạn rõ ràng có thể tạo mảng trong một hàm duy nhất nếu chúng chỉ cần/được sử dụng trong đó - những gì tôi giới thiệu ở đây chỉ là một cái gì đó tôi đã thực hiện gần đây cho một dự án tại nơi làm việc (với dữ liệu trong các mảng là ví dụ dữ liệu tất nhiên!)

Hope this helps người ra một chút :-D

Các vấn đề liên quan