Mảng kết hợp với các bản sao php

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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

Thời trang

Đăng ngày 18 tháng 6 năm 2011

Thời trang

  • Mảng kết hợp với các bản sao php

  • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

sajjurock

Đăng ngày 18 tháng 6 năm 2011

sajjurock

  • Mảng kết hợp với các bản sao php

  • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

xyph

Đăng ngày 18 tháng 6 năm 2011

xyph

  • Mảng kết hợp với các bản sao php

  • cựu nhân viên
  • Mảng kết hợp với các bản sao php
    • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

sajjurock

Đăng ngày 18 tháng 6 năm 2011

sajjurock

  • Mảng kết hợp với các bản sao php

  • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

Pikachu2000

Đăng ngày 18 tháng 6 năm 2011

Pikachu2000

  • Mảng kết hợp với các bản sao php

  • cựu nhân viên
  • Mảng kết hợp với các bản sao php
    • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

sajjurock

Đăng ngày 18 tháng 6 năm 2011

sajjurock

  • Mảng kết hợp với các bản sao php

  • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

Pikachu2000

Đăng ngày 18 tháng 6 năm 2011

Pikachu2000

  • Mảng kết hợp với các bản sao php

  • cựu nhân viên
  • Mảng kết hợp với các bản sao php
    • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

xyph

Đăng ngày 18 tháng 6 năm 2011

xyph

  • Mảng kết hợp với các bản sao php

  • cựu nhân viên
  • Mảng kết hợp với các bản sao php
    • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

xyph

Đăng ngày 18 tháng 6 năm 2011

xyph

  • Mảng kết hợp với các bản sao php

  • cựu nhân viên
  • Mảng kết hợp với các bản sao php
    • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

Thời trang

Đăng ngày 18 tháng 6 năm 2011

Thời trang

  • Mảng kết hợp với các bản sao php

  • 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ận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

sajjurock

Đăng ngày 18 tháng 6 năm 2011

sajjurock

  • Mảng kết hợp với các bản sao php

  • 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.

Mảng kết hợp với các bản sao php

Liên kết để bình luận
Chia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Mảng kết hợp với các bản sao php

sajjurock

Đăng ngày 19 tháng 6 năm 2011

sajjurock

  • Mảng kết hợp với các bản sao php

  • 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?

Làm cách nào để hợp nhất các giá trị trùng lặp trong một mảng trong PHP?

Hàm array_merge_recursive() hợp nhất một hoặc nhiều mảng thành một mảng . 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.

Làm cách nào để kết hợp hai mảng trong PHP loại bỏ các bản sao?

Bạn có thể sử dụng hàm PHP array_unique() và hàm PHP array_merge() để hợp nhất hai mảng thành một mảng mà không có giá trị trùng lặp trong .

Làm cách nào để kết hợp hai mảng trong PHP?

Hàm array_merge() trong PHP .
Hợp nhất hai mảng thành một mảng. $a1=mảng("đỏ","xanh"); .
Hợp nhất hai mảng kết hợp thành một mảng. $a1=array("a"=>"đỏ","b"=>"xanh"); .
Chỉ sử dụng một tham số mảng với các khóa số nguyên. $a=array(3=>"đỏ",4=>"xanh");

Làm cách nào để hợp nhất các giá trị trùng lặp trong mảng đa chiều trong PHP?

Để hợp nhất giá trị trùng lặp trong một mảng nhiều chiều trong PHP, trước tiên, tạo một mảng trống sẽ chứa kết quả cuối cùng. Sau đó, chúng tôi duyệt qua từng phần tử trong mảng và kiểm tra tính trùng lặp của nó bằng cách so sánh nó với các phần tử khác .