Home
Download
Add-ons
Help
Forum
Organisation
Project
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email?
May 26, 2012, 05:23:20 PM
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Search:
Advanced search
Interested in joining the WebsiteBaker team?
For more Information read
here
or on our
new website
.
155544
Posts in
21714
Topics by
7736
Members
Latest Member:
chris85
WebsiteBaker Community Forum
Deutsch (German)
Off-Topic
(Moderator:
badknight
)
Wahhh!!! - PHP Frage zu Array
Pages: [
1
]
Go Down
Author
Topic: Wahhh!!! - PHP Frage zu Array (Read 758 times)
fischstäbchenbrenner
Offline
Posts: 271
Wahhh!!! - PHP Frage zu Array
«
on:
April 09, 2011, 05:23:27 PM »
Ich weiß, das gehört in ein PHP-Forum...
aber..
Wie bekomme ich bei einem Array den zb 5. Eintrag, egal welchen Key der hat?
Wie lösche ich den 5. Eintrag, unabhängig vom Key?
Logged
Burn, baby, burn!
Stefek
WebsiteBaker Org e.V.
Offline
Posts: 4884
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #1 on:
April 09, 2011, 07:40:57 PM »
Zieh das Array durch eine Schleife und bau einen zähler mit ein.
Kommt natürlich noch drauf an, wie Du die Schleife durchläufst (for, foreach, while).
Kommt auch etwas drauf an, wieviele Ebenen das Array hat.
Gruß,
Stefek
Logged
"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
FrankH
Offline
Posts: 735
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #2 on:
April 10, 2011, 09:35:30 AM »
> Wie bekomme ich bei einem Array den zb 5. Eintrag, egal welchen Key der hat?
Gezählt wird ab 0, der 5. Eintrag ist also $a[4]
> Wie lösche ich den 5. Eintrag, unabhängig vom Key?
unset($a[4]);
Sehr hilfreich ist in solchen Fällen meist
http://de3.php.net/manual/de/function.unset.php
Logged
Ochs und Esel in ihrem Lauf
halt ich leider auch nicht auf
fischstäbchenbrenner
Offline
Posts: 271
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #3 on:
April 10, 2011, 09:49:31 AM »
Und was wenn der 5. Eintrag den Key 2 hat, und der 7. den Key 5?
dann liefert $a[5] den 7. Eintrag und nicht den 5. (Klar: 4 bzw 6, weil index ab 0)
Die mäßig elegante Lösung scheint zu sein, mit array_merge() immer wieder alle keys neu zu setzen.
Es geht darum, ein Element zufällig auszuwählen, aber dieses soll dann länger nicht mehr vorkommen:
Also eher vorne rausnehmen, hinten wieder anhängen.
Code:
$arrayx = array();
$r = rand ( 0 , count($longlist) / 2);
$tx = $longlist[$r];
unset ($longlist[$r]);
$longlist = array_merge($longlist, $arrayx);
$longlist[] = $tx;
Ohne arraymerge liefert dieser Code in einer Schleife sofort einen Haufen Fehler, weil es ja $longlist[$r] bald nicht mehr gibt (wurde ja gelöscht)
«
Last Edit: April 10, 2011, 09:53:42 AM by fischstäbchenbrenner
»
Logged
Burn, baby, burn!
NorHei
Forum administrator
Offline
Posts: 485
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #4 on:
June 28, 2011, 09:20:06 AM »
Wenn Du zufällig was rauslöschen möchtest .
http://www.php.net/manual/de/function.array-rand.php
und dann unset. , Nur so eine Idee.
Logged
It is easier to change the specification to fit the program than vice versa.
fischstäbchenbrenner
Offline
Posts: 271
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #5 on:
June 28, 2011, 09:57:44 AM »
Jo, ich will ja nicht _irgendwelche_ zufälligen Einträge, sondern nur aus den ersten Elementen.
Der Sinn der Sache:
Wenn ein Element dargestellt wurde, soll es nicht gleich wieder kommen, sondern die Elemente bevorzugt werden, die schon länger nicht dran waren.
Ich habe also zunächst eine Liste:
1,2,3,4,5,6,7,8
Ich nehme nur aus der ersten Hälfte
$r = rand ( 0 , count($longlist) / 2);
Das liefert zb 1 und 4
Ich stelle 1 und 4 dar, lösche sie aus der Liste, hänge sie hinten dran:
2,3,5,6,7,8,1,4
Beim nächsten (und übernächsten) Mal kann 1 und 4 SICHER nicht mehr vorkommen.
Da es noch weitere Faktoren gibt, werden immer diejenigen bevorzugt, die schon länger nicht mehr dran waren.
Logged
Burn, baby, burn!
hellblazer
Offline
Posts: 40
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #6 on:
June 28, 2011, 01:40:43 PM »
Code:
Hallo Chio
Da hast Du es ja schon fast;
schau dir mal "array_shift" und "array_push" mal an (optional auch noch "shuffle")
<?php
/**
*
Array mit 10 Elementen anlegen
*
-- [1,2,3,4,5,6,7,8,9,10]
*/
$a
=
range
(
1
,
10
);
/**
*
Erste Element vom Array in Var und löschen
*
-- [2,3,4,5,6,7,8,9,10]
*/
$element
=
array_shift
(
$a
);
/**
*
Irgendwas nun damit machen
*
*/
echo
"<p>"
.
$element
.
"</p>"
;
/**
*
Element hinten an das Array anfügen
*
-- [2,3,4,5,6,7,8,9,10,1]
*/
array_push
(
$a
,
$element
);
?>
Somit wird beim durchlauf jedes Element einmal, genau einmal, genommen.
Edit
Und wenn es zufällig sein soll vorher "mischen"
Code:
<?php
/**
*
Array mit 10 Elementen anlegen
*
-- [1,2,3,4,5,6,7,8,9,10]
*/
$a
=
range
(
1
,
10
);
/**
*
Array mischen
* -- [6,8,2,3,9,7,1,4,5,10]
*/
shuffle
(
$a
);
/**
*
Schleife
*/
$n
=
count
(
$a
);
for(
$i
=
0
;
$i
<
$n
;
$i
++) {
/**
*
Erste Element vom Array in Var
*
-- [8,2,3,9,7,1,4,5,10]
*/
$element
=
array_shift
(
$a
);
/**
*
Irgendwas nun damit machen
*
*/
echo
"<p>"
.
$element
.
"</p>"
;
/**
*
Element hinten an das Array anfügen
*
-- [8,2,3,9,7,1,4,5,10,6]
*/
array_push
(
$a
,
$element
);
}
?>
MfG
Stefan
«
Last Edit: June 28, 2011, 01:51:36 PM by hellblazer
»
Logged
It's not the PHP itself - it's the thought behind it, that drives me mad.
DarkViper
Development Team
Offline
Posts: 1253
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #7 on:
June 28, 2011, 01:53:12 PM »
Das löst Deine Probleme komplett und einfach:
The ArrayIterator class
mit ::seek den n-ten Eintrag suchen
mit ::current den Wert holen
mit ::offsetUnset den aktuellen Wert löschen und
mit ::append hinten wieder anhängen
(SPL::ArrayIterator ist eine standard PHP-Klasse seit PHP5)
Kannst das ganze aber auch zu Fuß coden:
Code:
<?php
// works with numeric and associative index as well
$list
= array(...
whateveryouwant
...);
$position
=
rand
(
0
, (int)(
sizeof
(
$list
) /
2
));
// or some other randomizer
$i
=
0
;
foreach(
$list
as
$key
=>
$value
) {
if( ++
$i
>=
$position
) { break; }
// break the foreach if position matches
}
unset(
$list
[
$key
] );
// delete entry from original position
$list
=
array_merge
(
$list
, array(
$key
=>
$value
);
// append entry at the end of list
$result
=
$value
;
// here the result value
?>
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
NorHei
Forum administrator
Offline
Posts: 485
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #8 on:
June 28, 2011, 07:50:26 PM »
I thought merge resorts the indexes
I think simply adding the Array will do the job :
http://www.php.net/manual/en/language.operators.array.php
Or just add a new Element $array[$key]=$value;
MAybe you would like to use key(), next(), prev(), reset()
«
Last Edit: June 28, 2011, 08:12:52 PM by NorHei
»
Logged
It is easier to change the specification to fit the program than vice versa.
fischstäbchenbrenner
Offline
Posts: 271
Re: Wahhh!!! - PHP Frage zu Array
«
Reply #9 on:
June 29, 2011, 12:17:37 PM »
Hallo,
An sich ist das Problem ja schon gelöst (siehe oben)
Es kam mir nur so "verquer" vor, ich dachte das muss ja einfacher gehen...
Es ging übrigens um diese Seite:
http://www.ig-jazz.at/
(Highlights)
Die Clubs, die seltener Events machen, sollen vorgereiht werden, _wenn_ sie mal einen haben. Wie zb am Freitag der "Radfahrer" - auch wenn 10 weitere Clubs ein Event haben.
Logged
Burn, baby, burn!
Pages: [
1
]
Go Up
Jump to:
Please select a destination:
-----------------------------
General
-----------------------------
=> General Announcements
=> Security Announcements
=> Documentation
=> WebsiteBaker Website Showcase
=> Guest Area & Off-Topic
-----------------------------
English
-----------------------------
=> WebsiteBaker 2.9
===> Announcements
===> Help/Support
=====> Modules / Extensions
===> Suggestions
===> Software bugs
=> Help & Support
=> Modules
=> Droplets (PHP code for use with Droplet module) & Snippets (raw PHP code)
=> jQuery
=> Templates, Menus & Design
=> WebsiteBaker Language Files
=> WebsiteBaker 2.x discussion
=> WebsiteBaker 3
=> Archive (posts up to 2007)
-----------------------------
Deutsch (German)
-----------------------------
=> Ankündigungen
=> WebsiteBaker 2.9
===> Ankündigungen
===> Hilfe/Support
=====> Module / Extensions
===> Vorschläge
===> Softwarefehler
===> Erfahrungs und Testberichte
=> Hilfe/Support
=> Module & Snippets
=> Templates & Design
=> Tutorials
=> jQuery
=> Diskussion über WB
=> Off-Topic
=> Archiv für Themen bis 2007
-----------------------------
Nederlands (Dutch)
-----------------------------
=> Aankondigingen
=> Hulp & Ondersteuning
=> Niet-Terzake (Off Topic)
-----------------------------
Francais (French)
-----------------------------
=> Help/Support
-----------------------------
Italiano (Italian)
-----------------------------
=> Help/Support
-----------------------------
Bakery (WB shop module)
-----------------------------
=> Bakery English
=> Bakery Deutsch
-----------------------------
KeepInTouch (Multi Contact Module)
-----------------------------
=> KeepInTouch English
=> KeepInTouch Deutsch
Loading...