Volgorde array veranderen

Status
Niet open voor verdere reacties.

geertd

Gebruiker
Lid geworden
16 nov 2008
Berichten
340
Hallo allemaal,

Ik heb een array in php die ik graag van volgorde wil veranderen.

Hij heeft op dit moment een vergelijkbare volgorde:

PHP:
$array = array(
    "a" => "foo",
    "b" => "bar",
    "c" => "bar",
    "d" => "foo",
    "e" => "bar",
    "f" => "foo",
    "g" => "bar",
    "h" => "foo",
    "i" => "bar",
    "j" => "foo"
);

Ik zou hem graag willen hebben in deze volgorde:
PHP:
$array = array(
    "a" => "bar",   "f"=> "foo",
    "b" => "foo",   "g"=> "bar",
    "c" => "bar",   "h"=> "foo",
    "d" => "foo",   "i"=> "bar",
    "e" => "bar",   "j"=> "foo"
);

Weet iemand hoe ik dit voor elkaar kan krijgen?

Alvast bedankt,

Geert
 
je kunt dit doen:
PHP:
<?php
$array = array(
    "a" => "foo",
    "b" => "bar",
    "c" => "bar",
    "d" => "foo",
    "e" => "bar",
    "f" => "foo",
    "g" => "bar",
    "h" => "foo",
    "i" => "bar",
    "j" => "foo"
);
$alpha = range('a','j');
$newArray = array();
for($x=0;$x<5;$x++)
{
$newArray[$alpha[$x]] = $array[$alpha[$x]];
$newArray[$alpha[($x+5)]] = $array[$alpha[$x+5]];
}
echo '<pre>';
print_r($array);
print_r($newArray);
echo '</pre>';
?>
heb het getest. het werkt volges mij.

toch zou ik wel een willen weten waarom je dit wilt???
 
toch zou ik wel een willen weten waarom je dit wilt???

Ik wil een tabel vullen met de items in de array.
De tabel heeft echter meerdere kolommen.

Ik wil dat de items dus niet zo in de tabel komen:
HTML:
<table>
<tr><td>Item 1</td><td>Item 2</td></tr>
<tr><td>Item 3</td><td>Item 4</td></tr>
</table>

Maar zo:
HTML:
<table>
<tr><td>Item 1</td><td>Item 3</td></tr>
<tr><td>Item 2</td><td>Item 4</td></tr>
</table>
 
PHP:
<?php
$array = array(
    "a" => "foo",
    "b" => "bar",
    "c" => "bar",
    "d" => "foo",
    "e" => "bar",
    "f" => "foo",
    "g" => "bar",
    "h" => "foo",
    "i" => "bar",
    "j" => "foo"
);
$alpha = range('a','j');
echo '<table>';
for($x=0;$x<5;$x++)
{
echo '<tr>';
/*
$newArray[$alpha[$x]] = $array[$alpha[$x]];
$newArray[$alpha[($x+5)]] = $array[$alpha[$x+5]];
*/
echo '<td>'.$array[$alpha[$x]].'</td>';
echo '<td>'.$array[$alpha[$x+5]].'</td>';
echo '</tr>';
}
echo '</table>';
?>
 
je kunt dit doen:
PHP:
<?php
$array = array(
    "a" => "foo",
    "b" => "bar",
    "c" => "bar",
    "d" => "foo",
    "e" => "bar",
    "f" => "foo",
    "g" => "bar",
    "h" => "foo",
    "i" => "bar",
    "j" => "foo"
);
$alpha = range('a','j');
$newArray = array();
for($x=0;$x<5;$x++)
{
$newArray[$alpha[$x]] = $array[$alpha[$x]];
$newArray[$alpha[($x+5)]] = $array[$alpha[$x+5]];
}
echo '<pre>';
print_r($array);
print_r($newArray);
echo '</pre>';
?>
heb het getest. het werkt volges mij.

toch zou ik wel een willen weten waarom je dit wilt???

Helaas zal deze oplossing niet zo werken.
De keys van de items in de array zijn namelijk niet a, b, c, maar zijn meer gecompliceerd.
Daarnaast zijn de items op het begin eigenlijk ook al niet gesorteerd op key.

Ze moeten dus gesorteerd worden op de index van de keys.
 
kun je dan even je code posten???
en ook de verdere bedoeling.
 
Dit is de code die ik gebruik voor het aanmaken van de tabel.
De bedoeling is dus dat $selectedFiles['b_Disco'] opnieuw wordt gesorteerd.

PHP:
function getSelectedFiles() {
$selectedFiles['b_Disco'] = array('disco-2a',
				    'disco-2b',
				    'disco-3a',
				    'disco-3b',
				    'disco-4a',
				    'disco-4b',
				    'disco-5a',
				    'disco-5b',
				    'disco-6a',
				    'disco-6b',
				    '0006'
		                   );
return $selectedFiles;
}

function getLibrary($mode) {
	$translate = array('v'=>'verb', 'n'=>'noun', 'a'=>'adjective', 'b'=>'translation');
	
	$selectedFiles = getSelectedFiles();	
	
	foreach ($selectedFiles[$mode] as $file) {
	
		include_once('files/'.strtr($mode, $translate).'/'.$file.'.php');
	}
	return $library_file;
}

function printLibraryHTML($mode) {
	$library_file = getLibrary($mode);
	$count = 0;
	foreach ($library_file as $file) {

		if (!($count % 2)) { echo "<tr>"; }
		echo "<td class='imgcolom'><img src='filesmall.png' alt='' class='pointer' onclick=\"clearSelection();dubbelklikken('".$mode."_".$file['ID']."')\" /></td><td>";
		echo stripslashes($file['title']['nl']);
		echo "</td>";
		echo "<td onclick=\"clearSelection();dubbelklikken('".$mode."_".$file['ID']."')\">".$file['items']."</td>";
		
		if ($count % 2) { echo "</tr>"; }
		
		$count++;
	}
}

Een voorbeeld php bestand bij include_once('files/'.strtr($mode, $translate).'/'.$file.'.php');:
PHP:
<?php
$library_file['disco-2b']['title']['nl']           = 'Disco 2.B De zusters van Jupiter';
$library_file['disco-2b']['ID']                    = 'disco-2b';
$library_file['disco-2b']['date']                  = '2012-12-31 12:45';
$library_file['disco-2b']['type']                  = 'b';
$library_file['disco-2b']['items']                 = '14';
$library_file['disco-2b']['version']               = '1.0';
$library_file['disco-2b']['filesystem']['version'] = '1.0';
$library_file['disco-2b']['script']['filename']    = 'disco-2b.php';

$library_file['disco-2b']['content']               = 'dea:godin:
soror:zus:
uxor, uxores:vrouw:echtgenote
quoque:ook:
mater, matres:moeder:
pater, patres:vader:
filia:dochter:
insula:eiland:
ubi:waar?:
silva:bos:
flos, flores:bloem:
florere:bloeien:
puella:meisje:
ludere:spelen:'; ?>
 
phoe dat vind ik erg veel werk eventjes xd.
maar je kunt die array toch gewoon omdraaien met het stukje code die ik al gepost heb.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan