我想要替换数组中的某些东西,但数组没有排序。所以也许你知道如何解决这个问题。
我有一个包含这个元素的数组。
<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谢谢你; - )
答案 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);
}
}
}