PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "umgekehrtes array"


JuliusCaesar
06.12.2007, 18:44:45
hey ich weiß nicht wie ichs anders schreiben soll
aber ich habe ein array mit den Zahlen
1,3,4,5,6,7,8,10

jetzt soll er die fehlenden Zahlen von 1-10 ausgeben
also: 2 und 9
wie bekomme ich das hin?
geht das überhaupt?

mfg Julius
und danke schon mal im voraus

vt1816
06.12.2007, 19:03:08
...

wie bekomme ich das hin?
geht das überhaupt?

mfg Julius
und danke schon mal im voraus

Mit 'ner Schleife (for(...))!

JuliusCaesar
06.12.2007, 19:15:47
bitte genauer
gibts da ne spezielle funktion die ich in die schliefe einbinden muss?

rambi
06.12.2007, 19:32:52
wie wäre es mit range() und array_diff() ??

JuliusCaesar
06.12.2007, 22:11:14
thx funkt aber noch net so ganz
while($missing_g1_arr = mysql_fetch_array($missing_g1_query))
{
$m_g1_arr[] = $missing_g1_arr['system'];
}

$range = range(0, 400);
//doppelte werte entfernen
$unique_g1 = array_unique($m_g1_arr);

//Fehlende Galas ermitteln
$m_g1 = array_diff($unique_g1, $range);

echo "<pre>";
print_r($unique_g1);
print_r($m_g1);
echo "</pre>";

es gibnt keine ausgabe für print_r($m_g1);

rambi
07.12.2007, 00:34:42
Vermutlich würde ich versuchen, die Lösung im SQL zu suchen....

JuliusCaesar
07.12.2007, 01:05:42
hm es gab doch noch son SQL befehl, distinct oder so ähnlich oder?
nur wie nutzt man den noch?

rambi
07.12.2007, 01:08:35
Nee.. ich kann Logik...
Aber ein guter Handbuchvorleser..... brrrr....

conmunich
07.12.2007, 07:21:12
bitte sehr, so sollte es funktionieren.

foreach(range(1,10) as $loop) {
if(!in_array($loop,array(1,3,4,5,6,7,8,10)))
print $loop.' ist nicht enthalten<br>';
}

rambi
07.12.2007, 10:03:09
var_export(array_values(array_diff(range(1,10),array(1,3,4,5,6,7,8,10) )));

JuliusCaesar
08.12.2007, 00:23:34
bitte sehr, so sollte es funktionieren.

foreach(range(1,10) as $loop) {
if(!in_array($loop,array(1,3,4,5,6,7,8,10)))
print $loop.' ist nicht enthalten<br>';
}

danke das funkt
habs jetzt soweit geschafft nis auf eine kleingkeit noch, an de rich aber verzeifel
for($gala_i=1; $gala_i<15; $gala_i++)
{

//alte Datensätze finden

//SQL abfrage

while($old_date_arr[$gala_i] = mysql_fetch_array($old_date_query[$gala_i]))
{
$old_data[$gala_i][] = $old_date_arr[$gala_i]['system'];
}

//ist old_data leer oder handelt es sich um ein array
if(is_array($old_data[$gala_i]))//Zeile 86
{
for($u=0;$u<6;$u++)
{
echo "{$gala_i}:{$old_data[$gala_i][$i]}, ";
}
echo "<br>";
}
else
{
echo "
{$gala_i}:1, {$gala_i}:2, {$gala_i}:3, {$gala_i}:4, {$gala_i}:5 <br>";
}
}

ich bekomme immer einen Offset Fehler, 2 weitere offset Fehler habe ich schon wegbekommen, aber bei diesem hier weiß ich nicht was daran falsch sein soll....
Notice: Undefined offset: 2 in xxxxx/einlesen2.php on line 86

defabricator
08.12.2007, 00:28:49
if(isset($old_data[$gala_i]) && is_array($old_data[$gala_i]))

JuliusCaesar
08.12.2007, 15:12:53
thx das funkt
vielen dank

JuliusCaesar
09.12.2007, 01:51:44
sorry wenn ich euch nm fragen muss, aber aufeinmal taucht noche in offset fehler auf

while($old_date_arr[$gala_i] = mysql_fetch_array($old_date_query[$gala_i]))
{
$old_data[$gala_i][] = $old_date_arr[$gala_i]['system'];
}

//ist old_data leer oder handelt es sich um ein array
if(isset($old_data[$gala_i]) and is_array($old_data[$gala_i]))
{
for($u=0;$u<6;$u++)
{
echo "{$gala_i}:{$old_data[$gala_i][$u]}, ";//in dieser Zeile soll der Fehler stecken
}
echo "<br>";
}
eigentlich wird die schleife doch nur ausgeführt wenn $old_date existiert und wenns ein array ist, wo sit da das Problem?
wisst ihr auch diesmal ne Lösung?

mfg Julius

defabricator
09.12.2007, 03:08:32
Wie heißt denn die Fehlermeldung genau und wo tritt sie auf?

JuliusCaesar
09.12.2007, 19:53:56
hey vllt war der code ausschnit zu kurz
es handelt sich um 2 ineinander verschatelte for-schleifen

//14 Galaxien
for($gala_i=1; $gala_i<15; $gala_i++)
{

//alte Datensätze finden


$old_date_sql[$gala_i] = "SELECT * FROM si_gala WHERE uni = $uni AND gala = {$gala_i} AND
date_unix < $old_date_unix";

$old_date_query[$gala_i] = mysql_query($old_date_sql[$gala_i]) or die(mysql_error()
.'<hr>old_date_sql[$gala_i]'.$old_date_sql[$gala_i].'<hr>');

while($old_date_arr[$gala_i] = mysql_fetch_array($old_date_query[$gala_i]))
{
$old_data[$gala_i][] = $old_date_arr[$gala_i]['system'];
}

//ist old_data leer oder handelt es sich um ein array
if(isset($old_data[$gala_i]) and is_array($old_data[$gala_i]))
{
//nur jeweils 5 alte Daten anzeigen
for($u=0;$u<6;$u++)
{
echo "{$gala_i}:{$old_data[$gala_i][$u]}, "; //Zeile 98
}
echo "<br>";
}

}
Notice: Undefined offset: 1 in einlesen2.php on line 98
1:,
Notice: Undefined offset: 2 in einlesen2.php on line 98
1:,
Notice: Undefined offset: 3 in einlesen2.php on line 98
1:,
Notice: Undefined offset: 4 in einlesen2.php on line 98
1:,
Notice: Undefined offset: 5 in einlesen2.php on line 98