Sự khác biệt giữa hàm này và hàm array_merge() là khi hai hoặc nhiều phần tử mảng có cùng khóa. Thay vì ghi đè các khóa, hàm array_merge_recursive() tạo giá trị dưới dạng một mảng
Ghi chú. Nếu bạn chỉ gán một mảng cho hàm array_merge_recursive(), nó sẽ hoạt động giống hệt như hàm array_merge()
Lưu ý rằng các bản sao tồn tại trong cả hai mảng. Tôi chỉ muốn bỏ qua những bản sao đó và tạo kết quả như đã đề cập ở trên
"array_combine" thực hiện chính xác điều tương tự. Nhưng vấn đề là trong trường hợp trùng lặp, cái sau sẽ thắng thế. Tôi chỉ muốn chức năng tương tự như "array_combine" nhưng nó sẽ giữ các bản sao như hiện tại. (thứ tự cũng quan trọng)
Liên kết để bình luậnChia sẻ trên các trang web khác
Thời trang
Đăng ngày 18 tháng 6 năm 2011
Thời trang
- Các thành viên
- 1. 7k
- Vị trí. anbani
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Bạn không thể có một mảng với các khóa trùng lặp. Không biết liệu các chỉ mục có được xây dựng với bất kỳ logic nào trong đó hay không, nhưng tôi sẽ để chúng tự động tạo. Trong trường hợp đó, không có nguy cơ trùng lặp và sẽ được kết hợp mà không cắt bớt. Ví dụ
<?php $arr1 = array('a', 'b', 'c'); $arr2 = array('x', 'y', 'z'); $mix = array_combine($arr1, $arr2); print_r($mix); ?>
Liên kết để bình luậnChia sẻ trên các trang web khác
sajjurock
Đăng ngày 18 tháng 6 năm 2011
sajjurock
- Thành viên mới
- 9
- Tác giả
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Vì vậy, không có cách nào để giữ các khóa trùng lặp trong một mảng?
Tôi thực sự đang nhận dữ liệu từ người dùng trong một cặp trường đầu vào được lưu trữ trong hai mảng khác nhau. Tất cả những gì tôi muốn là kết hợp cả hai mảng sao cho các giá trị của mảng đầu tiên sẽ trở thành "khóa" của mảng kết quả và các giá trị của mảng thứ hai sẽ trở thành "giá trị" của mảng kết quả
Cảm ơn bạn đã trả lời mặc dù nó không giải quyết được vấn đề của tôi
Liên kết để bình luậnChia sẻ trên các trang web khác
xyph
Đăng ngày 18 tháng 6 năm 2011
xyph
- cựu nhân viên
- 3. 7k
- Vị trí. Surrey, BC
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Dễ dàng
http. //php. net/thủ công/vi/chức năng. kết hợp mảng. php
<?php $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); print_r($c); ?>
đầu ra
Array ( [green] => avocado [red] => apple [yellow] => banana )Liên kết để bình luậnChia sẻ trên các trang web khác
sajjurock
Đăng ngày 18 tháng 6 năm 2011
sajjurock
- Thành viên mới
- 9
- Tác giả
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Cảm ơn bạn. Bạn đã đọc bài viết đầu tiên của tôi?
Tôi đang trích dẫn một số văn bản từ bài viết đầu tiên của tôi
"array_combine" thực hiện chính xác điều tương tự. Nhưng vấn đề là trong trường hợp trùng lặp, cái sau sẽ thắng thế. Tôi chỉ muốn chức năng tương tự như "array_combine" nhưng nó sẽ giữ các bản sao như hiện tại. (thứ tự cũng quan trọng)
Liên kết để bình luậnChia sẻ trên các trang web khác
Pikachu2000
Đăng ngày 18 tháng 6 năm 2011
Pikachu2000
- cựu nhân viên
- 11. 4k
- 1
- Vị trí. Cộng hòa độc lập tương lai Texas
- Tuổi. 106
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Bạn không thể có các khóa mảng trùng lặp. Nếu bạn thực sự kiểm tra mã bạn đã cung cấp trong ví dụ và print_r() các mảng kết quả, bạn sẽ thấy rằng. Nó sẽ tạo ra cái này
Array ( [1] => c [2] => b ) Array ( [1] => x [2] => y )
Liên kết để bình luậnChia sẻ trên các trang web khác
sajjurock
Đăng ngày 18 tháng 6 năm 2011
sajjurock
- Thành viên mới
- 9
- Tác giả
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Ổn thỏa. Cám ơn mọi người. tôi đã có câu trả lời. Tôi sẽ sử dụng một số cách khác để hoàn thành nó
Liên kết để bình luậnChia sẻ trên các trang web khác
Pikachu2000
Đăng ngày 18 tháng 6 năm 2011
Pikachu2000
- cựu nhân viên
- 11. 4k
- 1
- Vị trí. Cộng hòa độc lập tương lai Texas
- Tuổi. 106
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Có lẽ nếu bạn giải thích những gì bạn đang cố gắng hoàn thành, ai đó ở đây có thể giúp đỡ
Liên kết để bình luậnChia sẻ trên các trang web khác
xyph
Đăng ngày 18 tháng 6 năm 2011
xyph
- cựu nhân viên
- 3. 7k
- Vị trí. Surrey, BC
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Chà, bạn KHÔNG THỂ CÓ các khóa trùng lặp trong một mảng. Bạn có thể làm điều này tôi đoán. /
<?php $arr1 = array('a','b','c','d'); $arr2 = array('x','y'); print_r( array_merge_fill($arr1,$arr2) ); print_r( array_merge_fill($arr2,$arr1) ); function array_merge_fill( $keys, $values ) { $return = array(); $keyCount = count( $keys ); $valueCount = count( $values ); if( $keyCount > $valueCount ) { for( $i = 0; $i < $valueCount; $i++ ) $return[$keys[$i]] = $values[$i]; for( ; $i < $keyCount; $i++ ) $return[$keys[$i]] = end($values); } else { for( $i = 0; $i < $keyCount; $i++ ) $return[$keys[$i]] = $values[$i]; for( ; $i < $valueCount; $i++ ) $return[end($keys).($i-$keyCount)] = $values[$i]; } return $return; } ?>
chỉnh sửa - Tôi sẽ tạo một phiên bản có thể sử dụng các khóa tùy chỉnh bằng foreach
Liên kết để bình luậnChia sẻ trên các trang web khác
xyph
Đăng ngày 18 tháng 6 năm 2011
xyph
- cựu nhân viên
- 3. 7k
- Vị trí. Surrey, BC
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Một cách khắc phục khác có thể là lưu trữ các mảng của bạn như thế này
<?php $arr1 = array( array(1,'a'), array(2,'b'), array(1,'c') ); $arr2 = array( array(1,'x'), array(2,'y'), array(2,'y') ); print_r( merge_2d($arr1,$arr2) ); function merge_2d( $keys, $values ) { $return = array(); foreach( $keys as $key => $arr ) $return[] = array( $arr[1],$values[$key][1] ); return $return; } ?>
Liên kết để bình luậnChia sẻ trên các trang web khác
Thời trang
Đăng ngày 18 tháng 6 năm 2011
Thời trang
- Các thành viên
- 1. 7k
- Vị trí. anbani
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Dù bạn đang cố gắng làm gì, nếu bạn cần các khóa trùng lặp, logic sẽ sai. Nếu bạn có 2 chỉ mục "a" (a=>10, a=>20), bạn sẽ phân biệt giữa các thành phần chính "a" khác nhau như thế nào?
Hãy cho chúng tôi biết mã của đầu vào và cách bạn lấy dữ liệu từ chúng và tôi chắc chắn rằng sẽ có cách giải quyết
Liên kết để bình luậnChia sẻ trên các trang web khác
sajjurock
Đăng ngày 18 tháng 6 năm 2011
sajjurock
- Thành viên mới
- 9
- Tác giả
- Chia sẻ
Đăng ngày 18 tháng 6 năm 2011
Được chứ. Tôi là người mới và đang học hỏi, vì vậy đừng mong đợi một mã hoàn hảo hoặc thậm chí là tốt. Dù sao nó đây rồi (phiên bản đơn giản hóa)
HTML
<form name="input" action="" method="post"> Link# 1: <input name="url[]" size="80" type="text" /><br /> Title# 1: <input name="title[]" size="80" type="text" /><br /><br /> Link# 2: <input name="url[]" size="80" type="text" /><br /> Title# 2: <input name="title[]" size="80" type="text" /><br /><br /> Link# 3: <input name="url[]" size="80" type="text" /><br /> Title# 3: <input name="title[]" size="80" type="text" /><br /><br /> . . . . . . . . . . (Users can add as many pairs of links and titles as they wish by clicking "Add" button which works with the help of javascript) <input type="button" value="Add More" onClick="addInput('dynamicInput');" /> <input value="Generate!" name="submit" type="submit" /> </form>
PHP
<?php require('./functions.php'); $links = $_POST['url']; $titles = $_POST['title']; //$vlinks = array_combine($links, $titles); $vlinks = array_combine(array_values($titles), array_values($links)); //print_r($vlinks); foreach($vlinks as $title => $link) { if(strlen($link) >= 1 && strlen($title) >= 1) { switch(detectSite($link)) { case 'youtube': $elink = youtube($link,str_replace(" ","-",$title)); if($elink == 404) { echo "[Error] Video URL isn't valid!"; } else { echo $elink; } . . . . . . . . . . . . ((More cases like above.)) } } else { echo "[Error] Please write both: URL and title."; } } ?>
Và cảm ơn bạn một lần nữa vì đã rất hữu ích.
Liên kết để bình luậnChia sẻ trên các trang web khác
sajjurock
Đăng ngày 19 tháng 6 năm 2011
sajjurock
- Thành viên mới
- 9
- Tác giả
- Chia sẻ
Đăng ngày 19 tháng 6 năm 2011
Làm cách nào tôi có thể sử dụng các giá trị từ hai mảng kết hợp (i. e. từ mảng liên kết và tiêu đề) trong một vòng lặp foreach?