Gezocht: sprintf functie, maar dan voor array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sam Clauw

Sam Clauw

30/08/2015 09:24:37
Quote Anchor link
De vraag is simpel: bestaat er een php functie waarbij je procent tekens in een array kunt vervangen door meegegeven functie variabelen? Zelfde principe als de sprintf functie dus, maar dan in combinatie met een array in plaats van met een string.

Hier wil ik het namelijk in toepassen:

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
<?php

class AnimalPropertyLinksController extends CoasterCmsAppController
{
    public $paginate = array(
            'AnimalPropertyLink' => array(
                'conditions' => array(
                    'Animal.id' => '%b',
                    'AnimalPropertyLink.deleted' => null
                ),
                'order' => array(
                    'AnimalProperty.sequence' => 'ASC',
                    'AnimalProperty.id' => 'ASC'
                ),
                'limit' => 50
            )
        );

    
    public function index()
    {

        $this->Paginator->settings = sprintf($this->paginate, $this->request->params['named']['animal_id']);
        
        $properties = $this->Paginator->paginate('AnimalPropertyLink');
        
        $this->set('properties', $properties);
    }

?>
Gewijzigd op 30/08/2015 09:27:29 door Sam Clauw
 
PHP hulp

PHP hulp

24/12/2024 13:42:42
 
Eddy E

Eddy E

30/08/2015 10:01:57
Quote Anchor link
str_replace() kan ook met array's werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$zoek
= array("%", "procent");
$vervang = array("per 100", "/100");

$tekst[] = "Ik heb 50% verkocht";
$tekst[] = "Hij verkocht 50 procent";
$tekst[] = "Wij samen verkochten 100%";

echo str_replace($zoek, $vervang, $tekst);
?>


Je hoeft dus niet met (s)printf() te werken.
Kan wel, al kan je dan beter met een foreach() werken. Ik zie er, in dit geval, geen voordelen in.


Toevoeging op 30/08/2015 10:05:11:

Een eigen functie is helemaal niet nodig.
Het zou niets meer zijn dan str_replace(). En voor het gemak zou je eigen functie dezelfde syntax krijgen...
Gewijzigd op 30/08/2015 10:03:59 door Eddy E
 
Sam Clauw

Sam Clauw

04/09/2015 20:59:30
Quote Anchor link
Bedankt voor de moeite Eddy! Ik zoek echter een oplossing om variabelen in een klasse property te kunnen stoppen. Als er geen manier bestaat om dit via een array te doen, dan zie ik niet meteen een duidelijke manier om dit aan te pakken.
 
Marthijn Buijs

Marthijn Buijs

04/09/2015 21:35:15
Quote Anchor link
Misschien een optie om eerst van een array json te maken en vervangen en vervolgens weer een array ervan maken?
 
Sam Clauw

Sam Clauw

06/09/2015 20:07:22
Quote Anchor link
Gho, dan denk ik toch dat dit een behoorlijke omweg is voor hetgeen ik wil bereiken. Ik kan uiteraard de array uiteraard meteen in m'n index actie uitvoeren in plaats van de array in een klasse property te stoppen. Maar dan wordt het weer een stuk onoverzichtelijk natuurlijk :)
 

07/09/2015 08:55:33
Quote Anchor link
Misschien ligt het aan mij, maar wat is precies de bedoeling?

Variabelen in een klasse-eigenschap te stoppen is het reguliere gebruik van variabelen, alleen zijn de dan gegroepeerd in een class. Je kunt een associatieve array gebruiken als waarde van een variabele.

Als je een associatieve, nested array wilt gebruiken met een bestaande find-and-replace -functie, of elke andere functie, dan kun je dat doen in combinatie met array_walk().
 



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.