小编Rob*_*ill的帖子

我们可以将括号存储到PHP变量中以获取数组的值吗?

我想将方括号字符串存储在变量中,以便我可以使用该变量来获取数组的值.我怎样才能做到这一点?

例:

$vehicle = array("car"=>"volvo","bike"=>"polygon");

$bracket1="['car']";

$bracket2="['bike']";

echo $vehicle.$bracket1;//my expected result = 'volvo';

echo $vehicle.$bracket2;//my expected result = 'polygon';
Run Code Online (Sandbox Code Playgroud)

案例假设我有这些数据

$data = array(
"vehicles"=>array(
    array(
        "name"=>"volvo",
        "manufacturer"=>"abc",
        "color"=>array("blue"=>"wonderful","red"=>"fantastic")),
    array(
        "name"=>"toyota",
        "manufacturer"=>"def",
        "color"=>array("blue"=>"awesome","red"=>"good")),
    array(
        "name"=>"mecedes",
        "manufacturer"=>"ghi",
        "color"=>array("blue"=>"nice","red"=>"great","green"=>"good","brown"=>"elegant")),
));

$fields  = array(
    "$data['vehicles']['name']",
    "$data['vehicles']['manufacturer']",
    "$data['vehicles']['color']['blue']",
    "$data['vehicles']['color']['red']"
);

//a function to print those data according to user parameter($fields, it may uncertain pattern)

function get_data($data,$fields){
    for($c=0;$c<count($data);$c++){
        foreach($fields as $field){     //field to show
            echo $field;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

$data = array(
"vehicles"=>array(
    array(
        "name"=>"volvo", …
Run Code Online (Sandbox Code Playgroud)

php arrays variables brackets square-bracket

1
推荐指数
1
解决办法
1031
查看次数

PHP5 - 从数组中删除索引

我有这样的数组:

array(2) {
    [0]=> array(1) { 
        ["name"]=> string(8) "TestName" 
    } 
    [1]=> array(1) { 
        ["surname"]=> string(6) "iljado" 
    } 
}
Run Code Online (Sandbox Code Playgroud)

我需要它像这样:

array(2) { 
    ["name"]=> string(8) "TestName" ,
    ["surname"]=> string(6) "iljado" 
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

php arrays

1
推荐指数
1
解决办法
42
查看次数

Silverstripe - 不同的下拉字段

我正在尝试使用数据对象中的州/省填充下拉列表,但有许多记录具有相同的状态。我怎样才能只显示不同的状态?

这将返回不同的状态:

$states= DataObject::get()->distinct(true)->column('State');
Run Code Online (Sandbox Code Playgroud)

这在我的下拉列表中显示为不同的值:

DropdownField::create('State', 'State', $states)
                    ->setEmptyString('(Select one)'),
Run Code Online (Sandbox Code Playgroud)

但这仅将下拉列表中的值显示为状态,而不将 ID 显示为状态。我怎样才能填充ID?

当我将它们添加到数组时它不喜欢它。

php distinct silverstripe dropdown

1
推荐指数
1
解决办法
300
查看次数

SilverStripe DropdownField默认值设置为空白

有人可以帮我DropdownField在SilverStripe 3 中将其设置为默认值吗?

目前这是我的代码:

DropdownField::create(
    'HowHear',
    'How did you hear of this job?',
    array(
        'Indeed' => 'Indeed',
        'Caterer' => 'Caterer',
        'Gumtree' => 'Gumtree',
        'Word of mouth' => 'Word of mouth',
        'Other' => 'Other',
    )
)->addExtraClass('full-width'),
Run Code Online (Sandbox Code Playgroud)

php silverstripe dropdown

1
推荐指数
1
解决办法
276
查看次数

Silverstripe ModelAdmin 拖放可排序

我想让我的 ModelAdmin GridField 可以通过拖放进行排序。我尝试添加此代码:

$gridFieldName = 'Destributors';
    $gridField = $form->Fields()->fieldByName($gridFieldName);

    if ($gridField) {
        $gridField->getConfig()->addComponent(new GridFieldFilterHeader(),new GridFieldSortableRows('SortOrder'));
    }
Run Code Online (Sandbox Code Playgroud)

但似乎不起作用。关于如何实施它有什么想法吗?

任何帮助将不胜感激

php silverstripe silverstripe-4

1
推荐指数
1
解决办法
590
查看次数

如何在模板中显示另一个数据对象

这是Area类的功能

        public function findLatestReport()
    {
        $getReport = Report::get()->filter('AreaID',$this->ID)
            ->sort('Date ASC')->first();
        return $getReport;
    }
Run Code Online (Sandbox Code Playgroud)

这是报告类功能

    public function getWeatherStatus()
    {
        return $this->Fields()->filter('Name', 'Weather Status')->first();
    }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以显示WeatherStatus详细信息的“区域”模板。

<% loop $findLatestReport %>
        {$WeatherStatus}
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)

php silverstripe

1
推荐指数
1
解决办法
30
查看次数

如何在 PHP 中计算两个时间(不是日期时间)之间的秒数差异。Laravel // PHP // Carbon

下面举一个例子来说明这个问题。下面的两个例子都给出了错误的区别:

// gives 86398 while the correct is 2sec
$diff_in_sec = strtotime('23:59:59') - strtotime('00:00:01'); 

// again gives 86398 while the correct is 2sec.
$diff_in_sec = Carbon::parse('00:00:01')->diffInSeconds(Carbon::parse('23:59:59')); 
Run Code Online (Sandbox Code Playgroud)

我想要的是23:59:59与 相比00:00:01返回 2 秒的差异,并 00:00:0123:59:59.

php time laravel difference

1
推荐指数
1
解决办法
203
查看次数

如何在正斜杠上拆分URL

我正在尝试将URL路径拆分为数组中的单个字符串.我已经尝试了一些东西,这就像我得到的一样接近:

<?php   
$url = '/category/subcategory/item';

$output = array(); 
$chunks = explode('/', $url); 
foreach ($chunks as $i => $chunk) 
{
    $output[] = sprintf
    (
        //'<a href="#/%s">%s</a>',
        implode('/', array_slice($chunks, 0, $i + 1)),
        $chunk
    );
}

echo implode(' &gt;&gt; ', $output);

include 'footer.php';
?>
Run Code Online (Sandbox Code Playgroud)

返回:

/ category >>/category/subcategory >>/category/subcategory/item

但我想尝试回来

category >> subcategory >> item

谢谢!

php

0
推荐指数
1
解决办法
1934
查看次数

如何在模板中渲染has_many?

我有两个类:LetterLetterFiles(附件中的文件):

class Letter extends DataObject {
    private static $db = array(
        'Sender' => 'Text',
        'SendTo' => 'Text',
        ...
    );

    private static $has_many = array(
        'Letters' => 'LetterFiles'
    );
    ...
}

class LetterFiles extends File {
    private static $has_one = array(
        'Files' => 'Letter'
    );
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想在上面显示所有字母和所有附件LetterPage:

class LetterPage extends Page {
}

class LetterPage_Controller extends Page_Controller {
    public function index() {
        $letters = Letter::get()->sort('DateUpload');
        return array(
            'AllLetters' => $letters
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用模板 …

php silverstripe

0
推荐指数
1
解决办法
59
查看次数

Silverstripe将外部URL渲染为相对链接

我遇到SilverStripe将外部URL视为相对链接的问题.

我有一个DataObject:

class Artist extends DataObject {
  private static $db = array(
    'Title' => 'Varchar(255)',
    'Content' => 'HTMLText',
    'Website' => 'Varchar(255)',
  );
}
Run Code Online (Sandbox Code Playgroud)

艺术家网站通过<a href="$Website" target="_blank">.问题是URL被附加到网站的基本URL,因此我们最终得到如下内容:

<a href="mysite.com/www.artistsite.com" target="_blank">

而不是所期望的:

<a href="www.artistsite.com" target="_blank">

但是,如果$ Website包含协议(http或https),则链接按预期工作.因此,如果$ Website是http://www.artistsite.com,那么我们得到:

<a href="http://www.artistsite.com" target="_blank">

该网站包含数百个,最终成千上万的客户维护的艺术家记录.理想情况下,客户端可以粘贴URL,而不必担心每个URL都附加http或https.

有人有主意吗?这与SilverStripe论坛中描述的问题相同,但尚未发布任何解决方案.

这个站点在SilverStripe 3.6上.

html php silverstripe

0
推荐指数
1
解决办法
140
查看次数

为什么返回在我的函数代码中不起作用,但echo工作,php?

看看我的代码,如果我使用echo $ html_of_questions,它可以工作.如果我使用return,则不起作用.为什么?我应该使用echo吗?因为有人告诉我应该总是在函数内部使用return.

<?php

function fruit($fruit){
$questions = [
         'q1' => '<div>Is it good?</div>

                 <input type="text" value="submit"/>',
         'q2' => '<div>where is it from?</div>

                 <input type="text" value="submit"/>',
       ];

$fruit_questions = [
         'apple'  => [1,3,5],
         'banana' => [1,2,4],
         'guava' => [17,21,4],
       ];

$question_keys = $fruit_questions[$fruit];

$html_of_questions = ''; // This will hold the questions to echo
foreach($question_keys as $question_key){
    $html_of_questions .= $questions['q'.$question_key]
}

     return $html_of_questions;//doesn't work, use echo it works
}

     fruit('apple');
?>
Run Code Online (Sandbox Code Playgroud)

php

-1
推荐指数
1
解决办法
45
查看次数