عرض سلام و احترام.
چرا خروجی دو تابع array_push و array_pop چنانچه مستقیما درون تابع A قرار میگرفتند، فرق داشت؟
خواهش میکنم تا جایی که بتونم به هرکدوم از دوستان سوالی داشته باشن و بلد باشم جواب میدم امید وارم مفید باشه.
به دلیل اینکه زمانی که شما تابع array_pop و نیز array_push رو مستقیم داخل تابع A میزارید تعداد عنصر ها رو بر میگردونه.
تابع A مشکلی نداره
شما دقت کنید زمانی که بصورت مستقیم میزارید خروجی خود تابع array_push رو براتون بر میگردونه که تعداد عناصر ارایس.
اما شما زمانی که
$arr3
رو داخل تابع A میریزید خود ارایه ای که داخلش تغیری ایجاد کردید دارید ور دامپ میکنید
<?php
function A($value){
echo "<pre>";
var_dump($value);
echo "</pre>";
}
$arr = ['a','b','c','d','e'];
array_push($arr,'f');
A($arr);
echo "<br>";
array_pop($arr);
A($arr);
echo "<br>";
توی کد بالا اگر متغیر $arr رو بزاریم داخل تابع A خروجی همون ارایه است که ما ساختیم و تغیرات توش ایجاد کردیم :
array (size=6)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
5 => string 'f' (length=1)
اما اگر بیایم و مستقیما array_push یا array_pop رو قرار بدیم خروجی توابع array_push , array_pop رو بهمون میده نه ارایه رو
سلام
تابع array_push عنصری رو به ارایه اضافه میکنه و array_pop اخرین عنصر رو از ارایه حذف میکنه و هر کدام یک ارایه خروجی میدهند
منظورتون رو درست متوجه نشدم اما اگر کد زیر رو بنویسید :
<?php
function A($value){
echo "<pre>";
var_dump($value);
echo "</pre>";
}
$arr = ['a','b','c','d','e'];
array_push($arr,'f');
A($arr);
echo "<br>";
array_pop($arr);
A($arr);
echo "<br>";
چنین خروجی رو به شما میده :
array_push :
array (size=6)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
5 => string 'f' (length=1)
array_pop :
array (size=5)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
در ابتدا ارایه ای ساخته شده که شامل حروف a - e هستش و سپس با تابع array_push به این ارایه حرف f رو هم اضافه کرده و در خروجی مشاهده میکنید که یک عنصر جدید به ارایه اضافه شده
و بعد از این با تابع array_pop اخرین عنصر از ارایه ای که f به اون اضافه شده حذف کردم مشاهده میکنید دوباره همان ارایه اول رو به ما داده و خروجی های این دو تابع درون تابع A ریخته شده و وردامپ شده
دقیقا شما کجا ایراد دارین ؟
سلام و عرض ادب میثم جان. ببخشید که همیشه زحمت سوالات من گردن شماست. آره کلیت موضوع رو متوجه شدم. مشکلم اونجاییه که طبق گفته استاد، این دو خط توی مثال ویدیو:
A(array_push($arr3,"pink","brown"));
و
array_push($arr3,"pink","brown");
A($arr3);
نتایج متفاوتی رو میدن (کد دوم شبیه همون کدیه که شما زحمت کشیدین نوشتین، اولی اما نتیجه ۶ رو برمیگردونه و به عبارتی count میکنه)
همین منوال برای تابع array_pop هم هست.
من هر چی ساختار تابع A رو نگاه کردم علت تفاوت رو نفهمیدم.