اذهب إلى المحتوى

السؤال

نشر

لدي المصفوفة التالية تضم مجموعة من البيانات:

<?php

$results = array (  
     array(  
        "name"           => "Kamel Mahmoudi",  
        "email"      => "kamel@gmail.com",
        "age"      => 20, 
        "country"      => "Saudi Arabia", 
     ),
     array(  
        "name"           => "John Doe1",  
        "email"      => "john@foo.com",
        "age"      => 24, 
        "country"      => "Jordan", 
     ),
     array(  
        "name"           => "John Doe2",  
        "email"      => "john@bar.com",
        "age"      => 31, 
        "country"      => "Egypt", 
     )  
); 

أريد تصدير هذه البيانات لملف csv بحيث يتم تحميل الملف من طرف المُتصفح للمُستخدم.

Recommended Posts

  • 0
نشر

يُمكنك ذلك عن طريق إستخدام الدالة header و الدالة fputcsv كما هو موضح أدناه:

<?php


$results = array (  
     array(  
        "name"           => "Kamel Mahmoudi",  
        "email"      => "kamel@gmail.com",
        "age"      => 20, 
        "country"      => "Saudi Arabia", 
     ),
     array(  
        "name"           => "John Doe1",  
        "email"      => "john@foo.com",
        "age"      => 24, 
        "country"      => "Jordan", 
     ),
     array(  
        "name"           => "John Doe2",  
        "email"      => "john@bar.com",
        "age"      => 31, 
        "country"      => "Egypt", 
     )  
);  
$filename = 'data.csv'; // تعريف مُتغير يحمل إسم الملف
/*
    إستخدام الدالة header 
    لجعل المُتصفح يقوم بتحميل ملف csv
*/
header("Content-type: text/csv"); // جعل الخرج ملف csv
header("Content-Disposition: attachment; filename=$filename");// الملف الذي سيتم تحميله سيأخذ الإسم data.csv

/*
    بما أننا نريد إرسال الملف للمُتصفح مُباشرة 
    بدون إنشائه نستخدم 
    stream: php://output
    بدل إنشاء ملف بهذا الشكل
    $output = fopen("filename.csv", "w");
    w: يعني أننا فتحنا الملف للكتابة

*/
$output = fopen("php://output", "w");

/*
     جلب كافة المفاتيح و جعل أول حرف من كل مفتاح كبير
     Name, Email, Age, Country
*/
$header = array_map('ucfirst', array_keys($results[0])); 

fputcsv($output, $header); // كتابة مُحتوى المُتغير header في أول صف   
foreach($results as $row) // الدوران على النتائج و كتابة كل صف داخل الملف  
{  
     fputcsv($output, $row);  
}       
fclose($output);// غلق الملف 

بعد تنفيذ السكربت سيقوم المتصفح بتنزيل ملف بالإسم data.csv يحمل كافة البيانات بهذا الشكل:

csv_data.thumb.JPG.cbf9b8625b093e0d95a6b766cc2bd797.JPG

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...