تالار گفتمان nCIS.ir

نسخه‌ی کامل: عملکرد جالب array_merge
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام
داشتم کدنویسی میکردم که یه خطا خیلی منو درگیر کرد اونم تو Ajax !!! تا اینکه منشا خطا رو درآوردم

این کد رو با هم ببینیم :

$oneArray=array(1=>'item 1' , 4=>'item 2');
$secArray=array(0=>'selection');
$res=array_merge($secArray , $oneArray);
echo "<select>";
foreach($res as $key=>$val){
	echo "<option value='{$key}'>{$val}</option>";
}
echo "</select>";

حالا نتیجه رو ببینید :

<select>
	<option value="0">selection</option>
	<option value="1">item 1</option>
	<option value="2">item 2</option>
</select>

همونطور که میبینید value های مربوط به option ها با کلیدهای آرایه مطابقت ندارند.جالبه !!!
اندیس های عددی، در array_merge نادیده گرفته میشن و از صفر شروع میشه و به ترتیب میره بالا.
جالبه که حتی اگه تو کوتیشن بزاریشون بازم همینجوریه
من آرایه ها رو اینطوری merge‌ میکنم. تو این حالت هم تست کردم مشکلی نداشت.

$res = $secArray + $oneArray;
استارتر جان طبیعیه عجیب نیست!!! از array_replace استفاده کن مشکلت حل میشه.
---
(21-05-1394، 04:23 ب.ظ)MRPM نوشته: [ -> ]من آرایه ها رو اینطوری merge‌ میکنم. تو این حالت هم تست کردم مشکلی نداشت.

$res = $secArray + $oneArray;

عجب!!! این کلا یه چیز دیگست و خیلی تفاوت داره :|
(21-05-1394، 11:57 ب.ظ)n0o0b_sina نوشته: [ -> ]عجب!!! این کلا یه چیز دیگست و خیلی تفاوت داره :|

منظورتون رو متوجه نشدم،‌ اگه قصدتون تمسخره بهتر بود به جای باهوش جلوه دادن خود یه زحتمی به خودت میدادی و کدها رو تست و نتایجش رو مقایسه میکردی.
(22-05-1394، 12:18 ق.ظ)MRPM نوشته: [ -> ]منظورتون رو متوجه نشدم،‌ اگه قصدتون تمسخره بهتر بود به جای باهوش جلوه دادن خود یه زحتمی به خودت میدادی و کدها رو تست و نتایجش رو مقایسه میکردی.

مردم دیگ جنبه ی شکلکم ندارن :|
منظورم این بود که این عملکرد رو اصلا نمیشه به جای array_merge استفاده کرد!!!
ربطی به شکلک نداره نوع جلموت بیان همه چیز هست.
خوب اگه منظورتون این بود چرا از اول همین رو نونشتید؟
خوب حالا چرا نمیشه استفاده کرد؟ با دلیل بگید وقتی بدون مشکل استفاده شده و جواب میده!!!
<?php
$arr1 = [
	'hello' => 'hi'
];
$arr2 = [
	'hello' => 'salam'
];
print_r($arr1 + $arr2); // out put: Array ( [hello] => hi )
print_r(array_merge($arr1, $arr2)); // out put: Array ( [hello] => salam )