خروجی توابع array_push و array_pop

پرسیده شده
فعالیت 1388 روز پیش
دیده شده 612 بار
0

عرض سلام و احترام.
چرا خروجی دو تابع array_push و array_pop چنانچه مستقیما درون تابع A قرار میگرفتند، فرق داشت؟
 

فایل پیوست

1
حذف شده

خواهش میکنم تا جایی که بتونم به هرکدوم از دوستان سوالی داشته باشن و بلد باشم جواب میدم امید وارم مفید باشه.

به دلیل اینکه زمانی که شما تابع 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 رو بهمون میده نه ارایه رو 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

19 تیر 99

حذف شده
عجب نکته ریزی! کاملا درسته. یک دنیا ممنونم عزیز. کم دقتی بنده رو ببخش.
حذف شده
خواهش میکنم خوشحالم تونستم کمکی کنم پیش میاد این مشکلات عادیه هممون در حال آموزشیم.
میثم نصرتی

19 تیر 99

1
حذف شده

سلام 

تابع 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 ریخته شده و وردامپ شده 

دقیقا شما کجا ایراد دارین ؟ 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

19 تیر 99

حذف شده
چون طولانی بود براتون پایین پست گذاشتم.
0
حذف شده

سلام و عرض ادب میثم جان. ببخشید که همیشه زحمت سوالات من گردن شماست. آره کلیت موضوع رو متوجه شدم. مشکلم اونجاییه که طبق گفته استاد، این دو خط توی مثال ویدیو:

A(array_push($arr3,"pink","brown"));

و

array_push($arr3,"pink","brown");
A($arr3);

نتایج متفاوتی رو میدن (کد دوم شبیه همون کدیه که شما زحمت کشیدین نوشتین، اولی اما نتیجه ۶ رو برمیگردونه و به عبارتی count میکنه)
همین منوال برای تابع array_pop هم هست.
من هر چی ساختار تابع A رو نگاه کردم علت تفاوت رو نفهمیدم.

فایل پیوست

امیرحسین شکری

توسط

امیرحسین شکری

19 تیر 99