שלח תשובה

זירת השאלות

2421
צפיות
2
תשובות

סידור מערך PHP לפי מספרים יורדים וה-A, B, C

,‏ 8 בינואר, 2012

שלום,
יש לי מערך ב-PHP, שהמפתחות שלו הם מספרים (בעצם תאריך) – יכול להיות שיהיו 2 מפתחות זהים או יותר, והערכים שלו לא כל כך משמעותיים לשאלה, אך לא יכולים להיות 2 זהים.
עכשיו, אני רוצה להציג את ערכי המערך לפי סדר יורד של המפתחות (למעלה – מפתח הכי גבוה; למטה – מפתח הכי נמוך), אבל אני רוצה שאם יהיו כמה מפתחות זהים – הם יסתדרו לפי ה-a, b, c של הערכים (בתוך סידור המפתחות).
לאחר מכן, הפכתי את זה, כך שהמפתחות הקודמים (המספרים) הם הערכים החדשים, והערכים הישנים הם המפתחות החדשים.

לדוגמא, נניח שיש לי מערך כזה (מפתח – ערך):
93 – abc
82 – gnj
109 – fjn
93 – pdo
57 – dksm

אני רוצה שהוא יסתדר כך (ולאחר מכן אהפוך את המפתחות לערכים ואת הערכים למפתחות):
109 – fjn
93 – abc
93 – pdo
82 – gnj
57 – dksm

ולא ששני ה-93 יסתדרו באקראיות ביניהם.


השתמשתי, כמובן, ב-arsort().
אשמח לעזרה.
תודה מראש.

תגיות: , ,

2 תשובות

  1. אני לא מכיר PHP אבל נשמע לי שלשלוף את המידע בסדר הנכון כבר ברמת השאילתא – יהיה יעיל ופשוט יותר

  2. Orel Ben-Yair הגיב:

    לא הצלחתי להבין. 🙂
    בכל זאת, אלכס עזר לי (XD), והנה הקוד שיציג רשימה מסודרת של הקבצים (מסוג html/php) הנמצאים באותה תיקייה כאשר תאריך העדכון של הקובץ שלמעלה הוא החדש ביותר ושל זה שלמטה הוא הישן ביותר (סדר עולה). במידה ויש 2 קבצים ומעלה שעודכנו באותו זמן בדיוק (נניח שהועלו לתיקייה באותו זמן) -> הם יהיו מסודרים לפי ה-A, B, C (סדר יורד).

    date_default_timezone_set('Asia/Jerusalem');
    $files_array=glob("{*.php,*.html}",GLOB_BRACE|GLOB_NOSORT);
    foreach ($files_array as $file_path) {
    if ($file_path!="pie.php"&&$file_path!="index.php") {
    $files[$file_path]=filectime($file_path);}}
    array_multisort(array_values($files), SORT_DESC, array_keys($files), SORT_ASC, $files);
    $files=array_keys($files);
    foreach ($files as $file) {
    echo '<a href="'.$file.'">'.$file.'</a> – עודכן לאחרונה ב-'.date("d.n.Y H:i:s.", filectime($file)).'<br />';}

שלח תשובה