علت برنگرداندن تابع implode

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

درمورد چاپ کردن مقادیر با تابع implode که بصورت آرایه ورودی میگیره، من دو حالت زیر رو تست کردم و هردو حالت ارور خاص خودش رو میداد!!

$result = "SELECT fullName, age FROM users where id < 8	";
$stmt = $db->prepare($result);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_OBJ);
echo implode(" | ", (array)$data) . PHP_EOL;

اگر در بالا fetch رو به صورت object برگردونیم ارور زیر رو میده(من قبلش (array) گذاشتم که تبدیل به ارایه بشه ولی اروری که میده میگه نمیتونه به string  تبدیل شه:

PHP Fatal error:  Uncaught Error: Object of class stdClass could not be converted to string in /opt/lampp/htdocs/7learn.php/showPDO.php:10
Stack trace:
#0 /opt/lampp/htdocs/7learn.php/showPDO.php(10): implode()
#1 {main}
  thrown in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10

 

و اگر به صورت associative array مقدار رو برگردونم ارور زیر رو بهم میده:

PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
PHP Notice:  Array to string conversion in /opt/lampp/htdocs/7learn.php/showPDO.php on line 10
Array | Array | Array | Array | Array | Array | Array

 

میشه بگید این مشکلی که همش ارور تبدیل به string میده در صورتیکه ما تبدیل بهش نمیکنیم برای چی هستش؟

ممنون!

فایل پیوست

امیر ابوئی
امیر ابوئی

24 دی 99

2

مورد تایید استاد

حذف شده

سلام و احترام

وقتی که شما از FETCH_ASSOC استفاده میکنید به شما یه ارایه دو بعدی میده، به خاطر همینه که به شما ارور Array to string conversion رو میده، میتونید اون رو داخل یه حلقه foreach بندازید و مقادیر به صورت رشته رو توی یک متغیر ذخیره کنید.

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

$result_as_string = '';

foreach($result as $r)
{
     $result_as_string .= implode(' | ', $r) . "\n";
}

echo $result_as_string;

result:

[email protected]
[email protected]
[email protected]

 

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

24 دی 99