Sorteren van ene foreach lukt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rik Engelen

Rik Engelen

04/04/2017 16:48:24
Quote Anchor link
Ik zie helaas niet wat ik fout doe om dit op ABC gesorteerd te krijgen. Ik hoop dat iemand mij kan helpen.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

$attribute
= sort($attributes);


foreach ( $attributes as $attribute ) : ?>

    
        <tr>
            <th align="left"><?php echo wc_attribute_label( $attribute->get_name() ); ?></th>
            <td><?php
                $values
= array();

                if ( $attribute->is_taxonomy() ) {
                    $attribute_taxonomy = $attribute->get_taxonomy_object();
                    $attribute_values = wc_get_product_terms( $product->get_id(), $attribute->get_name(), array( 'fields' => 'all' ) );

                    foreach ( $attribute_values as $attribute_value ) {
                        $value_name = esc_html( $attribute_value->name );

                        if ( $attribute_taxonomy->attribute_public ) {
                            $values[] = '<a href="' . esc_url( get_term_link( $attribute_value->term_id, $attribute->get_name() ) ) . '" rel="tag">' . $value_name . '</a>';
                        }
else {
                            $values[] = $value_name;
                        }
                    }
                }
else {
                    $values = $attribute->get_options();

                    foreach ( $values as &$value ) {
                        $value = esc_html( $value );
                    }
                }


                echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
            ?>
</td>
        </tr>
    <?php endforeach; ?>
Gewijzigd op 04/04/2017 22:44:59 door - Ariën -
 
PHP hulp

PHP hulp

22/12/2024 08:59:05
 
- SanThe -

- SanThe -

04/04/2017 16:53:07
Quote Anchor link
$attribute = sort($attributes);
In $attribute zit nu true of false want dat is de returnwaarde van sort.

Je gebruikt sort() zo:
$attributes = array(..........);
sort($attributes);
foreach($attributes as ...)
 
Rik Engelen

Rik Engelen

04/04/2017 16:58:20
Quote Anchor link
- SanThe - op 04/04/2017 16:53:07:
$attribute = sort($attributes);
In $attribute zit nu true of false want dat is de returnwaarde van sort.

Je gebruikt sort() zo:
$attributes = array(..........);
sort($attributes);
foreach($attributes as ...)


Hallo SanThe,

Ik vat hem even niet want wat moet ik nu waar doen ?






Toevoeging op 04/04/2017 21:18:55:

Als ik een var_dump doe krijg ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
array(28) { ["pa_aantal-personen"]=> object(WC_Product_Attribute)#56937 (1) { ["data":protected]=> array(6) { ["id"]=> int(1) ["name"]=> string(18) "pa_aantal-personen" ["options"]=> array(1) { [0]=> int(1415) } ["position"]=> int(0) ["visible"]=> bool(true) ["variation"]=> bool(false) } } ["pa_aantal-baby"]=> object(WC_Product_Attribute)#56989 (1) { ["data":protected]=> array(6) { ["id"]=> int(2) ["name"]=> string(14) "pa_aantal-baby" ["options"]=> array(1) { [0]=> int(2371) } ["position"]=> int(1) ["visible"]=> bool(true) ["variation"]=> bool(false) } } ["pa_huisdieren-toegestaan"]=> object(WC_Product_Attribute)#56908 (1) { ["data":protected]=> array(6) { ["id"]=> int(3) ["name"]=> string(24) "pa_huisdieren-toegestaan" ["options"]=> array(1) { [0]=> int(2372) } ["position"]=> int(2) ["visible"]=> bool(true) ["variation"]=> bool(false) } }
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/04/2017 22:30:44
Quote Anchor link
Bestudeer deze pagina eens en je weet dat sort() alleen maar TRUE of FALSE teruggeeft.

de array geef je door "by reference" wat wil zeggen dat er geen "kopie" gemaakt wordt maar dat er met het origineel gewerkt wordt. (of dit nou om lezen of om aanpassen gaat). Je kunt dat op dezelfde pagina op php.net zien omdat er een & teken voor de parameter staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Gebruik gaat dus zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$array
= array('peer','appel', 'banaan');

sort($array); // pass by reference dus $array zelf wordt veranderd!

print_r($array);  // appel, banaan, peer

?>
Gewijzigd op 04/04/2017 22:31:06 door Frank Nietbelangrijk
 
Rik Engelen

Rik Engelen

05/04/2017 08:02:30
Quote Anchor link
Hier ga ik straks eens even stoeien of me dit duidelijk is. Bedankt voor de input.

Toevoeging op 05/04/2017 10:49:04:

Frank Nietbelangrijk op 04/04/2017 22:30:44:
Bestudeer deze pagina eens en je weet dat sort() alleen maar TRUE of FALSE teruggeeft.

de array geef je door "by reference" wat wil zeggen dat er geen "kopie" gemaakt wordt maar dat er met het origineel gewerkt wordt. (of dit nou om lezen of om aanpassen gaat). Je kunt dat op dezelfde pagina op php.net zien omdat er een & teken voor de parameter staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

Gebruik gaat dus zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$array
= array('peer','appel', 'banaan');

sort($array); // pass by reference dus $array zelf wordt veranderd!

print_r($array);  // appel, banaan, peer

?>



Ik ben even wezen hardlopen en zojuist hier ingedoken maar dit is me natuurlijk wel duidelijk alleen op de 1 of andere manier sorteert hij niet en blijft alles door elkaar staan.

Zie http://iturl.nl/snjrO1g en dan extra informatie. Dat is nog steeds geen SORT helaas. Het lijk wel dat hij aan de hand van de array wat anders doet.
 
Ward van der Put
Moderator

Ward van der Put

05/04/2017 11:14:50
Quote Anchor link
Je var_dump() toont een array met objecten. Klopt dat?

Als je een array met objecten wilt sorteren op attributen van die objecten, kun je het beste een sorteerfunctie schrijven voor usort(). Zie bijvoorbeeld:

http://stackoverflow.com/questions/4282413/sort-array-of-objects-by-object-fields
 
Rik Engelen

Rik Engelen

05/04/2017 11:48:38
Quote Anchor link
Ward van der Put op 05/04/2017 11:14:50:
Je var_dump() toont een array met objecten. Klopt dat?

Als je een array met objecten wilt sorteren op attributen van die objecten, kun je het beste een sorteerfunctie schrijven voor usort(). Zie bijvoorbeeld:

http://stackoverflow.com/questions/4282413/sort-array-of-objects-by-object-fields


Dat klopt ja dat het nu in een object zit. Er is gister een woocommerce update geweest en ze hebben dit anders opgebouwd. Ik had het mooi opgelost maar toen zat het nog niet in een object.

Ik ga even naar jouw idee kijken, bedankt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.