Çok boyutlu Array içine dize getirin ve daha sonra dizi içinde alt değere göre sıralamak [kapalı]

2 Cevap php

Ben böyle bir dizesi vardır:

event name|event description|event type|event date|event time|event details,
event name|event description|event type|event date|event time|event details,
event name|event description|event type|event date|event time|event details,
event name|event description|event type|event date|event time|event details,

Bu, tüm bir dizge olduğunu. Ben bu olayı tarih ve dizi, yeniden tür haline çevirmek ve daha sonra tekrar bir dizeye açmak gerekiyor.

Herhangi bir yardım takdir edilmektedir. Çok teşekkürler.

2 Cevap

<?php
$string = "event name|event description|event type|2009-08-01|event time|event details,
event name|event description|event type|2009-08-02|event time|event details,
event name|event description|event type|2009-08-01|event time|event details,
event name|event description|event type|2009-08-03|event time|event details,";
   $arr = array();
   $strs = explode(',', $string);
   print_r($strs);
   foreach ($strs as $i => $str)
   {
      if (empty($str)) continue;

      $expl = explode('|', $str);
      $arr[strtotime($expl[3]) . $i] = $str;
   }
   ksort($arr);
   $result = implode(",\n", $arr);
   print_r($result);
?>

çıktı:

event name|event description|event type|2009-08-01|event time|event details,
event name|event description|event type|2009-08-01|event time|event details,
event name|event description|event type|2009-08-02|event time|event details,
event name|event description|event type|2009-08-03|event time|event details

Önce, satırlara dize bölmek istediğiniz alt-diziler bölmek, usort aracılığıyla çalıştırmak, ve sonra tekrar bir araya katılacaksınız. Örneğin:

function lineSplit( &$item )
{
    $item = explode( '|', $item );
}

function lineSort( $item1, $item2 )
{
    return strcmp( $item1[ 3 ], $item2[ 3 ] );
}

function lineJoin( &$item )
{
    $item = join( '|', $item );
}

$str = '...';

// First split on the comma to get each line.
$lines = explode( ",\n", $str );

// Now split each line into subarrays
array_walk( $lines, 'lineSplit' );

// Perform the sort using a user-defined function.
usort( $lines, 'lineSort' );

// Now join the subarrays into strings.
array_walk( $lines, 'lineJoin' );

// And finally merge the lines again.
$str = join( ",\n", $lines );