PDA

View Full Version : مشکل در پاس دادن آرایه به یک تابع



HosseinProgrammer
چهارشنبه 06 بهمن 1389, 11:23 صبح
سلام دوستان.
من نمونه برنامه زیر رو بصورت ساده نوشتم براتون. در این برنامه خطای زیر گرفته میشه:
مشکل از کجاست ؟


<?php
class A
{
var $c;
}

$z = new A();
$z[0]->c = 2;
$z[1]->c = 3;
$z[2]->c = 4;
B($z);

function B($w)
{
echo $w[1]->c;
}
?>

پیغام خطا پس از اجرا:

Fatal error: Cannot use object of type A as array in C:\wamp\www\test\test.php on line 8

پیشاپیش از جوابتون متشکرم.

MMSHFE
چهارشنبه 06 بهمن 1389, 12:00 عصر
با سلام، دوست گرامي شما شئ رو بصورت متغير معمولي ايجاد كردين ولي بصورت آرايه ميخواين باهاش كار كنيد كه قطعاً نميشه. كد زير رو امتحان كنيد:


<?php
class A
{
var $c;
}

$z[0] = new A();
$z[1] = new A();
$z[2] = new A();
$z[0]->c = 2;
$z[1]->c = 3;
$z[2]->c = 4;
B($z);

function B($w)
{
echo $w[1]->c;
}
?>

اميدوارم مشكلتون برطرف بشه.
موفق و مؤيد باشيد.

HosseinProgrammer
چهارشنبه 06 بهمن 1389, 14:45 عصر
ممنون از توضیحتون. حق با شماست.
ولی یک مشکل دیگر دارم. (چون نمونه کد نوشته بودم و کد اصلیم نبود.)

وقتی کد زیر اجرا میشه، پیغام خطای زیر رو میده:

<?php
$i[0] = 4;
$i[1] = 5;

function A()
{
echo $GLOBALS["i[1]"];
}

A();
?>


خطا:

Notice: Undefined index: i[1] in C:\wamp\www\Fuzzy Logic\test.php on line 7

tbebest
چهارشنبه 06 بهمن 1389, 15:07 عصر
سلام, معمولا در ابتدا از set شدن مطمئن میشن بعد از اونه که بکارش میگیرن. بوسیله isset() و یا empty() چک کن ,بعد استفاده کن مثال:

if (isset($_POST['value'])) {
// do something with $_POST['value']
}

HosseinProgrammer
چهارشنبه 06 بهمن 1389, 15:15 عصر
سلام, معمولا در ابتدا از set شدن مطمئن میشن بعد از اونه که بکارش میگیرن. بوسیله isset() و یا empty() چک کن ,بعد استفاده کن مثال:

if (isset($_POST['value'])) {
// do something with $_POST['value']
}

ولی توی کد من معلومه که set شده! مگه نه؟
چون میدونم set شده ، حتما میخوام بکار بگیرمش.

ayub_coder
چهارشنبه 06 بهمن 1389, 15:27 عصر
طرز تعریف آرایه اشتباه است
اینطور اصلاح کنید

$z[] = new A();

HosseinProgrammer
چهارشنبه 06 بهمن 1389, 19:01 عصر
طرز تعریف آرایه اشتباه است
اینطور اصلاح کنید

$z[] = new A();

روش شما هم مانند روش آقای MMSHFE درست است.
با تشکر

HosseinProgrammer
چهارشنبه 06 بهمن 1389, 19:03 عصر
ممنون از توضیحتون. حق با شماست.
ولی یک مشکل دیگر دارم. (چون نمونه کد نوشته بودم و کد اصلیم نبود.)

وقتی کد زیر اجرا میشه، پیغام خطای زیر رو میده:

<?php
$i[0] = 4;
$i[1] = 5;

function A()
{
echo $GLOBALS["i[1]"];
}

A();
?>


خطا:

Notice: Undefined index: i[1] in C:\wamp\www\Fuzzy Logic\test.php on line 7

این مشکل رو کشف کردم!!!
روش درست:

<?php
$i[0] = 4;
$i[1] = 5;

function A()
{
echo $GLOBALS["i"][1];
}

A();
?>

HosseinProgrammer
چهارشنبه 06 بهمن 1389, 19:04 عصر
بنده پاسخم را از این تاپیک گرفتم. مطالب بیان شده مفید بود و مشکل من را حل کرد.

با تشکر از همه دوستان

ayub_coder
چهارشنبه 06 بهمن 1389, 20:40 عصر
کاش به جای نوشتن کلمه ی تشکر آن دکمه ی تشکر را میزدید. :لبخندساده: برای همین مواقع کاربرد دارد. :قلب: