💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ امیر ابوئی
علت برنگرداندن تابع implode
امیر صالحی حل شده توسط امیر صالحی

درمورد چاپ کردن مقادیر با تابع 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 میده در صورتیکه ما تبدیل بهش نمیکنیم برای چی هستش؟

ممنون!

سلام و احترام

وقتی که شما از 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:

teaaaaaaat@gmail.com
tesaaat@gmail.com
test@gmail.com

 

 

بهترین پاسخ
امیر صالحی ۲۴ دی ۱۳۹۹، ۱۶:۳۰