PHP按特定值对数组进行排序

时间:2014-03-09 00:04:24

标签: php arrays

我想要替换数组中的某些东西,但数组没有排序。所以也许你知道如何解决这个问题。

我有一个包含这个元素的数组。

<media type="image" id="image5" label="book5.jpg" group="image" source="list2/Schuh2.jpg" url="image5/0.jpg" icon="image5/0.jpg"/>

我如何按照标签的值对数组进行排序?所以我首先从

获得

标贴:

 book3
 book4
 book2 

 --> 
 book2
 book3
 book4

我希望你知道我的意思:D谢谢你; - )

4 个答案:

答案 0 :(得分:0)

假设有独特的书#jpg图像,你可以做类似的事情......

<?php
$sortedArray = array();
foreach ($unsortedArray as $item ) {
    $sortedArray[explode('.', explode('label="book', $item)[1])[0]] = $item;
}
ksort($sortedArray);
foreach ($sortedArray as $item ) {
    echo $item;
}
?>

我没有测试过这个。

更新: 其他人建议使用usort()是一个很好的建议。像这样......

<?php
function compareElements($a, $b) {
    $aNum = explode('.', explode('label="book', $a)[1])[0];
    $aNum = explode('.', explode('label="book', $b)[1])[0];
    return ($aNum < $bNum) ? -1 : 1;
}

usort($arrayOfElements, "compareElements");
foreach ($arrayOfElements as $element) {
    echo $element;
}
?>

答案 1 :(得分:0)

$ books = array('book3','book4','book2'); 排序($书籍);

$ books = array('label1'=&gt;'book5.jpg',                    'label2'=&gt; 'book4.jpg','label3'=&gt; 'book3.jpeg'); ASORT($书籍); //按值排序(升序)

希望这有帮助!

答案 2 :(得分:0)

哈克

foreach($a as $k => $media) {
    $parts = explode(' ',$media);
    foreach($parts as $part) {
        $kv = explode('=', $part);
        if ($kv[0] == 'label') {
            $a[$kv[1]] = $media;
            unset($a[$k]);
        }
    }
}

ksort($a);

或者查看usort(),它可以让你使用自己的比较函数

答案 3 :(得分:0)

问题是,我不能指出一个值['id']所以我创建了一个包含所有信息的数组,第二个只用['id']个图片。< / p>

输入并加载XML文件。

$mashTemplateFile = 'C:\Users\...\test.xml';
$mashTemplate = simplexml_load_file($mashTemplateFile);
$mash = $mashTemplate->mash;

宣布arry的

$imageArrayMedTemp = array();
$imageArrayMedID = array();
$imageArrayMed = array();

将媒体中的所有信息都放在数组$imageArrayMedTemp中,只将['id']放入数组$imageArrayMedID

foreach ($mash->media as $med) {
    if ($med['type'] == 'image') {
        array_push($imageArrayMedTemp , $med);
        array_push($imageArrayMedID , $med['id']);
    }

现在我用['id']

对数组进行排序
natsort($imageArrayMedID);

排序后,我会将数组$imageArrayMedTemp中的信息放入一个新数组$imageArrayMed,并在两者的密钥相同时存储。

foreach ($imageArrayMedID as $key1 => $value1) {
    foreach ($imageArrayMedTemp as $key2 => $value2) {
        if($key1 == $key2){
            array_push($imageArrayMed,$value2);
        }
    }
}