Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 28

0
votes
answers
9 views
+10

PHP - 訪問多維數組的數據

-2

我想訪問多維數組中的數據。 我需要獲取這些數據的值(EC000001, EG000017, EN, EF007220),但我在PHP中處於foreach循環的困境,特別是當需要嵌套的foreach時能否請你幫助我,給我解決方案來訪問想要的數據?PHP - 訪問多維數組的數據

我需要遍歷所有的$ c,然後循環內部以獲取所有需要的數據。這是我之前收集EC000001值的方法,但我相信有更好的解決方案。陣列的

foreach ($c as $classCodes => $value) { 

    $classCode = key($c[$classCodes]); //classCode -> EC000001 
} 

結構:

Array 
(
    **[EC000001]** => Array 
     (
      [0] => **EG000017** 
      [1] => Array 
       (
        [0] => Array 
         (
          [0] => **EN** 
          [1] => Busbar terminal 
         ) 
        [1] => Array 
         (
          [0] => **nl-NL** 
          [1] => Aansluitklem stroomrail 
         ) 
       ) 

      [2] => Array 
       (
        [0] => Array 
         (
          [0] => **EF007220** 
          [1] => EU570448 
          [2] => Array 
           (
           ) 
         ) 

        [1] => Array 
         (
          [0] => EF007219 
          [1] => EU570448 
          [2] => Array 
           (
           ) 
         ) 

        [2] => Array 
         (
          [0] => EF000073 
          [1] => 
          [2] => Array 
           (
            [0] => EV009241 
            [1] => EV009472 
           ) 
         ) 

        [3] => Array 
         (
          [0] => EF007092 
          [1] => EU570448 
         ) 

        [4] => Array 
         (
          [0] => EF004969 
          [1] => EU570126  
         ) 
       ) 
     ) 

) 
+0

粘貼數組結構的文本,而不是圖像。 –

+0

@cale_b我做到了。希望現在能更好地解釋這個問題。 – punky

+0

@ punky查看我的回答 – Bluetree

沙发
0
0

我無法測試它,但你可以用這個嘗試的循環中:

$value[0];  // -> 1 
$value[1][0][0]; // -> 2 
$value[1][1][1]; // -> 3 
+0

已編輯的問題,希望現在能更好地解釋。 – punky

板凳
0
0
$EG000002Array[0][EG000001][0] 

$EG000002Array[0][EG000001][1][0] 

$EG000002Array[0][EG000001][1][1][1] 
+0

已編輯的問題,希望現在能更好地解釋。 – punky

地板
0
0

有多種途徑獲得來自多維陣列的陣列值

例如使用的foreach():

$flavors = array('Japanese' => array('hot' => 'wasabi', 
            'salty' => 'soy sauce'), 
       'Chinese' => array('hot' => 'mustard', 
            'pepper-salty' => 'prickly ash')); 

// $culture is the key and $culture_flavors is the value (an array) 
foreach ($flavors as $culture => $culture_flavors) { 

    // $flavor is the key and $example is the value 
    foreach ($culture_flavors as $flavor => $example) { 
     print "A $culture $flavor flavor is $example.
"; 
    } 
} 

或使用用於():

$specials = array(array('Chestnut Bun', 'Walnut Bun', 'Peanut Bun'), 
        array('Chestnut Salad','Walnut Salad', 'Peanut Salad')); 

// $num_specials is 2: the number of elements in the first dimension of $specials 
for ($i = 0, $num_specials = count($specials); $i < $num_specials; $i++) { 
    // $num_sub is 3: the number of elements in each sub-array 
    for ($m = 0, $num_sub = count($specials[$i]); $m < $num_sub; $m++) { 
     print "Element [$i][$m] is " . $specials[$i][$m] . "
"; 
    } 
} 

輸出應該是這樣的:

Element [0][0] is Chestnut Bun 
Element [0][1] is Walnut Bun 
Element [0][2] is Peanut Bun 
Element [1][0] is Chestnut Salad 
Element [1][1] is Walnut Salad 
Element [1][2] is Peanut Salad 
4楼
0
0

可以使用遞歸正則表達式檢查它是否粗體:)

通知我們把&$classCodes通過參考通過它和沒有 。

功能:

function get_bolded_data($c, &$classCodes = array()){ 
    foreach($c as $k1 => $v1){ 
     if(is_array($v1)){ 
      //If $v1 is an array we call get_bolded_data() again and pass 
      //$v1 and $classCode 
      get_bolded_data($v1,$classCodes); 
     }else if(preg_match("/(**).*(**)/", $v1)){ 
      $classCodes[] = $v1; 
     } 
    } 
} 

用法:

$classCodes = array(); 
$c = array(
    0 => array(
     '**EC000001**' => array(
      0 => '**EG000017**', 
      1 => array(
       0 => array(
        0 => '**EN**', 
        1 => 'Busbar terminal' 
       ) , 
       1 => array(
        0 => '**nl-NL**', 
        1 => 'Aansluitklem stroomrail' 
       ) 
      ) , 
      2 => array(
       0 => array(
        0 => '**EF007220**', 
        1 => 'EU570448', 
        2 => array() 
       ) , 
       1 => array(
        0 => 'EF007219', 
        1 => 'EU570448', 
        2 => array() 
       ) , 
       2 => array(
        0 => 'EF000073', 
        1 => '', 
        2 => array(
         0 => 'EV009241', 
         1 => 'EV009472' 
        ) 
       ) , 
       3 => array(
        0 => 'EF007092', 
        1 => 'EU570448' 
       ) , 
       4 => array(
        0 => 'EF004969', 
        1 => 'EU570126' 
       ) 
      ) 
     ) 
    ) 
); 
//Call our function 
get_bolded_data($c, $classCodes); 

下面是從的var_dump結果:

array(4) { 
    [0]=> 
    string(12) "**EG000017**" 
    [1]=> 
    string(6) "**EN**" 
    [2]=> 
    string(9) "**nl-NL**" 
    [3]=> 
    string(12) "**EF007220**" 
} 
0
votes
answers
9 views
+10

構造函數如何在沒有創建對象的情況下調用?爲什麼構造函數沒有以相同的方式再次調用?

-2

我使用PHP 7.1.11構造函數如何在沒有創建對象的情況下調用?爲什麼構造函數沒有以相同的方式再次調用?

考慮下面的工作代碼和它的輸出:

<?php 
    class butto { 

    public static $instance; 

    private function __construct() { 
     echo 'Contruct of butto class called</br>'; 
    } 

    public static function get_instance() { 
     if(!static::$instance instanceof static) { 
     static::$instance = new static(); 
     } 
     return static::$instance; 
    } 

    public function test() { 
     echo 'test function called</br>'; 
    } 

    } 

    class B extends butto { 

    public static $instance; 

    protected function __construct() { 
     echo 'Construct of Class B called</br>'; 
    } 

    public static function get_class_name() { 
     return __CLASS__; 
    } 
    } 

    butto::get_instance()->test(); 
    B::get_instance()->test(); 
    B::get_instance()->test(); 

    /*Output : Contruct of butto class called 
      test function called 
      Construct of Class B called 
      test function called 
      test function called*/ 
?> 

如果你看一下代碼觀察,你會知道,無論是類的構造函數即使沒有創建任何類的對象也會被調用。

即使我靜態訪問任何靜態方法,構造函數也會被調用。到目前爲止,我知道構造函數只能在創建對象時調用,因爲構造函數的目的是將初始值設置爲對象屬性,並在創建對象時立即使用。

那麼這怎麼可能?以這種方式使用構造函數有什麼好處,即訪問時不需要創建對象?

考慮下面的代碼行:

B::get_instance()->test(); 
B::get_instance()->test(); 

我的問題是,爲什麼B類的構造函數獲取調用僅前行?

它應該被再次調用第二行。

爲什麼它表現得如此怪異?

+0

但是你*在靜態方法':: get_instance()'中構造對象!那麼,你在說什麼?!此外,'static :: $ instance'和'new static()',也可以引用'butto'的任何潛在衍生物(與'self :: $ instance'和'new self()'對比),所以解釋爲什麼他們各自的構造函數也被調用,如果從他們自己的上下文中調用。 –

+0

另請參閱https://stackoverflow.com/questions/203336/creating-the-singleton-design-pattern-in-php5的答案。 – localheinz

沙发
0
1

因爲您的get_instance()本身具有這種邏輯。您正在將實例分配給您的靜態變量。靜態變量在同一類的不同實例之間「共享」。因此,當您第一次調用函數get_instance()時,您正在創建對象並將其存儲在您的靜態變量$instance中。下次當你調用相同的函數時,你的if條件結果是錯誤的,因此不需要創建一個新的對象/實例。再看看下面的代碼:

public static function get_instance() { 
    if(!static::$instance instanceof static) { 
    static::$instance = new static(); 
    } 
    return static::$instance; 
} 

它不是行爲怪異的方式,但它的行爲表現爲你的代碼要求它的行爲。

0
votes
answers
8 views
+10

擴展Laravel包

0

我周圍中搜索,找不到這一個明確的答案......擴展Laravel包

我有一個包DevDojo顫振,並想用我的應用程序來擴展它。我知道我必須重寫這些函數,以便作曲家更新不會覆蓋我的更改。

我該如何去做這件事?

UPDATE

public function store(Request $request) 
{ 
    $request->request->add(['body_content' => strip_tags($request->body)]); 

    $validator = Validator::make($request->all(), [ 
     'title'    => 'required|min:5|max:255', 
     'body_content'  => 'required|min:10', 
     'chatter_category_id' => 'required', 
    ]); 

    Event::fire(new ChatterBeforeNewDiscussion($request, $validator)); 
    if (function_exists('chatter_before_new_discussion')) { 
     chatter_before_new_discussion($request, $validator); 
    } 

    if ($validator->fails()) { 
     return back()->withErrors($validator)->withInput(); 
    } 

    $user_id = Auth::user()->id; 

    if (config('chatter.security.limit_time_between_posts')) { 
     if ($this->notEnoughTimeBetweenDiscussion()) { 
      $minute_copy = (config('chatter.security.time_between_posts') == 1) ? ' minute' : ' minutes'; 
      $chatter_alert = [ 
       'chatter_alert_type' => 'danger', 
       'chatter_alert'  => 'In order to prevent spam, please allow at least '.config('chatter.security.time_between_posts').$minute_copy.' in between submitting content.', 
       ]; 

      return redirect('/'.config('chatter.routes.home'))->with($chatter_alert)->withInput(); 
     } 
    } 

    // *** Let's gaurantee that we always have a generic slug *** // 
    $slug = str_slug($request->title, '-'); 

    $discussion_exists = Models::discussion()->where('slug', '=', $slug)->first(); 
    $incrementer = 1; 
    $new_slug = $slug; 
    while (isset($discussion_exists->id)) { 
     $new_slug = $slug.'-'.$incrementer; 
     $discussion_exists = Models::discussion()->where('slug', '=', $new_slug)->first(); 
     $incrementer += 1; 
    } 

    if ($slug != $new_slug) { 
     $slug = $new_slug; 
    } 

    $new_discussion = [ 
     'title'    => $request->title, 
     'chatter_category_id' => $request->chatter_category_id, 
     'user_id'    => $user_id, 
     'slug'    => $slug, 
     'color'    => $request->color, 
     ]; 

    $category = Models::category()->find($request->chatter_category_id); 
    if (!isset($category->slug)) { 
     $category = Models::category()->first(); 
    } 

    $discussion = Models::discussion()->create($new_discussion); 

    $new_post = [ 
     'chatter_discussion_id' => $discussion->id, 
     'user_id'    => $user_id, 
     'body'     => $request->body, 
     ]; 

    if (config('chatter.editor') == 'simplemde'): 
     $new_post['markdown'] = 1; 
    endif; 

    // add the user to automatically be notified when new posts are submitted 
    $discussion->users()->attach($user_id); 

    $post = Models::post()->create($new_post); 


    if ($post->id) { 
     Event::fire(new ChatterAfterNewDiscussion($request)); 
     if (function_exists('chatter_after_new_discussion')) { 
      chatter_after_new_discussion($request); 
     } 

     if($discussion->status === 1) { 
      $chatter_alert = [ 
       'chatter_alert_type' => 'success', 
       'chatter_alert'  => 'Successfully created a new '.config('chatter.titles.discussion').'.', 
      ]; 
      return redirect('/'.config('chatter.routes.home').'/'.config('chatter.routes.discussion').'/'.$category->slug.'/'.$slug)->with($chatter_alert); 
     } else { 
      $chatter_alert = [ 
       'chatter_alert_type' => 'info', 
       'chatter_alert'  => 'You post has been submitted for approval.', 
      ]; 
      return redirect()->back()->with($chatter_alert); 
     } 

    } else { 
     $chatter_alert = [ 
      'chatter_alert_type' => 'danger', 
      'chatter_alert'  => 'Whoops :(There seems to be a problem creating your '.config('chatter.titles.discussion').'.', 
      ]; 

     return redirect('/'.config('chatter.routes.home').'/'.config('chatter.routes.discussion').'/'.$category->slug.'/'.$slug)->with($chatter_alert); 
    } 
} 

有,我想修改/替代供應商包內的存儲功能。如果需要,我希望能夠修改某些功能或其中的一部分。請有人指出我正確的方向。

沙发
0
0

如果你的意思修改類實現您的應用程序,你可以改變的方式類解決:

app()->bind(PackageClass:class, YourCustomClass::class); 

,現在你可以創建這個自定義類,像這樣:

class YourCustomClass extends PackageClass 
{ 
    public function packageClassYouWantToChange() 
    { 
     // here you can modify behavior 
    } 
} 

我會建議你可以閱讀更多關於binding

當然很多依賴於如何創建類,如果它是使用new運算符創建的,您可能需要更改多個類,但是如果它被注入,它應該足以改變這個類。

+0

這真的沒有多大幫助。我試過這個,但沒有奏效。 – sogeniusio

0
votes
answers
8 views
+10

如何爲網頁創建滑塊圖?

0

我想創建這樣一個滑塊圖對我的網頁顯示的結果:slider diagram如何爲網頁創建滑塊圖?

我怎樣才能做到這一點提供我有一個最大和最小,我想繪製的價值?優選地,我想在使用html/javascript/php生成結果頁時即時創建它。編輯: 我可以看到我的問題很混亂。我不想創建滑塊(類似於表單窗體的輸入),而是使用具有顏色漸變背景的固定值的垂直線的輸出圖。

謝謝你的回答!

沙发
0
0

<html> 
 
<style> 
 
#slidecontainer { 
 
    width: 100%; 
 
} 
 

 
.slider { 
 
    -webkit-appearance: none; 
 
    width: 100%; 
 
    height: 25px; 
 
    background: #d3d3d3; 
 
    outline: none; 
 
    opacity: 0.7; 
 
    -webkit-transition: .2s; 
 
    transition: opacity .2s; 
 
} 
 

 
.slider:hover { 
 
    opacity: 1; 
 
} 
 

 
.slider::-webkit-slider-thumb { 
 
    -webkit-appearance: none; 
 
    appearance: none; 
 
    width: 25px; 
 
    height: 25px; 
 
    background: #4CAF50; 
 
    cursor: pointer; 
 
} 
 

 
.slider::-moz-range-thumb { 
 
    width: 25px; 
 
    height: 25px; 
 
    background: #4CAF50; 
 
    cursor: pointer; 
 
} 
 
</style> 
 
<body> 
 

 

 

 
<div id="slidecontainer"> 
 
    
 
    
 
    
 
    <input type="range" min="1" max="100" value="50" class="slider" id="myRange"> 
 
</div> 
 

 
</body> 
 
</html>

在這裏你有一個滑塊,享受!

+0

謝謝你THW的答案,我可以看到我的問題是:混亂。我不想創建滑塊(類似於表單窗體的輸入),而是使用具有顏色漸變背景的固定值的垂直線的輸出圖。 – aqua

板凳
0
0

既然你想要最小最大值你需要創建2範圍滑塊。

查看下面的代碼段 。

var rangeSlider = function(){ 
 
    var slider = $('.range-slider'), 
 
     range = $('.range-slider__range'), 
 
     value = $('.range-slider__value'); 
 
    
 
    slider.each(function(){ 
 

 
    value.each(function(){ 
 
     var value = $(this).prev().attr('value'); 
 
     $(this).html(value); 
 
    }); 
 

 
    range.on('input', function(){ 
 
     $(this).next(value).html(this.value); 
 
    }); 
 
    }); 
 
}; 
 

 
rangeSlider();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="range-slider"> 
 
    <label>Min.</label> 
 
    <input class="range-slider__range" type="range" value="100" min="0" max="500"> 
 
    <span class="range-slider__value">0</span> 
 
</div> 
 

 
<div class="range-slider"> 
 
<label>Max.</label> 
 
    <input class="range-slider__range" type="range" value="250" min="0" max="500" step="50"> 
 
    <span class="range-slider__value">0</span> 
 
</div>

,如果你想節省空間,您可以創建1米範圍滑塊2控制滑塊。 爲範圍滑塊創建一個html,然後應用一些jQuery。 請檢查下面

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" media="screen"> 
 
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 

 

 

 

 
     <div data-role="rangeslider"> 
 
     <label for="price-min">Price:</label> 
 
     <input type="range" name="price-min" id="price-min" value="200" min="0" max="1000"> 
 
     <label for="price-max">Price:</label> 
 
     <input type="range" name="price-max" id="price-max" value="800" min="0" max="1000"> 
 
     </div> 
 
    

片段然後,如果你想將數據提交到數據庫,你需要爲此

參考的範圍滑塊創建表單:https://www.w3schools.com/howto/howto_js_rangeslider.asp

希望這個答案可以幫助。

+0

謝謝你的回答,但是,我可以看到我的問題很混亂。我不想創建滑塊(類似於表單窗體的輸入),而是使用具有顏色漸變背景的固定值的垂直線的輸出圖。 – aqua

0
votes
answers
8 views
+10

如何搜索一個數組的部分值

0

好吧我正在嘗試爲我玩的遊戲(Runescape)創建一個boss boss日誌。我在互聯網上發現,開發者非常有禮貌地擁有一個冒險日誌,記錄你在遊戲中做的不同活動,老闆是其中的一員。所以我就信息到一個多維數組構造成這樣:如何搜索一個數組的部分值

Array 
(
[magic] => 5379429 
[questsstarted] => 5 
[totalskill] => 2333 
[questscomplete] => 134 
[questsnotstarted] => 95 
[totalxp] => 163169890 
[ranged] => 18656921 
[activities] => Array 
    (
     [0] => Array 
      (
       [date] => 17-Dec-2017 21:51 
       [details] => I killed 8 graceful followers of Armadyl, all called Kree'arra. The gods have little imagination for names. 
       [text] => I killed 8 Kree'arras. 
       etc 
       . 
       . 
      ) 

以上陣列是不是整個數組我縮短了它不會使這個太長時間,因爲這是一個大陣。我試圖做的只是得到說「我殺了x老闆」的價值觀,在這種情況下,老闆是Kree'arra。是什麼讓我難倒是該字符串中包含了一些改變,比如:

「我殺了5個kree'arras」

「我殺了3個kree'arras」

,所以我不能使用if語句,因爲我永遠不會知道使用比較運算符的確切字符串。我嘗試使用array_search('I killed', array_column($runemetrics, 'text')),但得到了一個空白屏幕。我嘗試了一堆我在stackoverflow上找到的答案,但是我得到了一個空白屏幕或部分是我想要的。我認爲這是一個簡單的解決方案。這裏是我的代碼:

$get_runemetrics = file_get_contents("https://apps.runescape.com/runemetrics/profile/profile?user=Thee_Newb&activities=20"); 
$runemetrics = json_decode($get_runemetrics, true); 

if(isset($runemetrics["activities"]) === TRUE){ 

    for($i = 0; $i < count($runemetrics["activities"]); $i++){ 

    echo $runemetrics["activities"][$i]["text"]; 

    } 

} 

編輯:我忘了提,老闆也會發生變化

+0

如果只有數量的變化,但其餘的保持不變,那麼它可能與if語句一起工作,如果在通用比較字符串中將通配符放在數字的位置。 – Geshode

+0

我忘了提老闆也改變了 –

沙发
0
1

您可以使用strpos()檢查text'I killed'

for($i = 0; $i < count($runemetrics["activities"]); $i++){ 
    $text = $runemetrics["activities"][$i]["text"]; 
    if (strpos($text, 'I killed') > -1) { 
     echo $text . '<br>'; 
    } 
} 
+0

謝謝sooo我知道這是一個簡單的解決方案。 –

0
votes
answers
8 views
+10

如何檢查對象是否爲空,如果它的0

0
$view = new UserView(); 
var_dump(is_null($view)) 
echo '<br>'; 
var_dump($view); 

布爾(假)如何檢查對象是否爲空,如果它的0

對象(用戶視圖)#2(0){}

這怎麼可能?而我如何檢查對象是否不爲空?

+1

的對象不能是'NULL'和['NULL'](http://php.net/manual/en/language.types.null.php)不是一個對象。它是一個表示未初始化的變量或已經[unset](http://php.net/manual/en/function.unset.php)的變量的值。存儲在'$ view'中的對象也不是'0'。 '0'是[數字](http://php.net/manual/en/language.types.integer.php),而不是[object](http://php.net/manual/en/language。 types.object.php)。 – axiac

沙发
0
1

你的對象不是空的,它只是空的,嘗試:

$empty = (bool) count((array) $view); 
+0

只是指出:當數組爲空時,'$ empty'將會是'false' – musashii

板凳
0
0

嘗試的功能get_object_vars https://secure.php.net/manual/en/function.get-object-vars.php

陣列get_object_vars(對象$對象) 獲取給定的訪問的非靜態屬性根據範圍對象。

$view = new stdclass(); 
echo count(get_object_vars($view)); 
0
votes
answers
8 views
+10

不完整的Laravel頁面視圖

0

我正在Laravel 5中開發一個Web應用程序,我基本上從控制器方法中的數據庫中獲取數據,並將其傳遞給表中的視圖。當我請求該頁面時,有時完整的數據不會顯示。就像它會隨機丟失幾行,它偶爾會偶爾發生,有時候在瀏覽器中顯示純html,有時也會顯示腳本,但是當我刷新頁面時,它會正確顯示頁面上的完整信息。 這背後有什麼可能的原因?不完整的Laravel頁面視圖

+0

是錯誤報告..? 試試這些.. ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(-1); – Darshan

+0

我想你正在使用PHP工匠服務...我確實遇到同樣的問題,但是爲了更好的開發體驗嘗試切換到家園 –

+0

這意味着如果應用程序部署在真正的服務器上,它不會導致任何這樣的問題? –

沙发
0
0

使用php artisan serve命令通常會導致此問題。在最近的一次,我遇到了同樣的情況。

您可以通過在虛擬主機上設置應用程序來擺脫這種情況。我爲虛擬主機使用了Laragon,現在應用程序運行得非常好。

0
votes
answers
8 views
+10

設置WooCommerce next/prev滑塊按鈕以按字母順序顯示產品

0

我的一位客戶要求我將所有顯示在單個產品頁面上的下一個/上一個按鈕上的產品按字母順序顯示其他產品。設置WooCommerce next/prev滑塊按鈕以按字母順序顯示產品

我當然還沒有能夠做到這一點,我已經嘗試了很多代碼。

我遇到了pagination.php文件,該文件是這樣的:

<nav class="woocommerce-pagination"> 
    <?php 
     echo paginate_links(apply_filters('woocommerce_pagination_args', array(
      'base'   => esc_url_raw(str_replace(999999999, '%#%', remove_query_arg('add-to-cart', get_pagenum_link(999999999, false)))), 
      'format'  => '', 
      'add_args'  => false, 
      'current'  => max(1, get_query_var('paged')), 
      'total'  => $wp_query->max_num_pages, 
      //'prev_text' => '&laquo;', 
      //'next_text' => '&raquo;', 
      'prev_text' => '<i class="fa fa-chevron-left"></i>', 
      'next_text' => '<i class="fa fa-chevron-right"></i>', 
      'type'   => 'list', 
      'end_size'  => 1, 
      'mid_size'  => 1 
     ))); 
    ?> 
</nav> 

有這麼編輯此單擊下一步按鈕時要字母順序,將顯示該產品的一種方式。

這裏向你展示我的意思截圖: check it out

從截圖中,你將看到下一個產品展示的東西,用字母F開頭的時候有以字母A.其他產品

謝謝!

沙发
0
0

我認爲你應該掛鉤woocommerce_product_query來滿足你的需求。

function my_custom_product_query($q){ 
    $q->set('orderby', 'title'); // default 'menu_order title' 
    $q->set('order', 'desc'); // default 'asc' 
} 

讓我知道它是否有效,我現在無法測試它。

0
votes
answers
8 views
+10

如何防止內置PHP函數變爲名稱空間?

0

我是新來的PHP命名空間,我有什麼是:如何防止內置PHP函數變爲名稱空間?

namespace FooBar; 
class JsonAssetRest{ 
    static function ini(){ 
     $headers = getallheaders(); 
    } 
} 
JsonAssetRest::ini(); 

,這是產生錯誤

Uncaught Error: Call to undefined function FooBargetallheaders() in /var/www/html/class JsonAssetRest.php 

如何使用getallheaders()可以(內置的功能)沒有得到這個錯誤?

編輯:該問題與刪除庫時我將代碼轉換爲名稱空間類有關。所述庫爲nginx定義了getallheaders。我對添加命名空間的錯誤消息感到困惑,並認爲這是問題所在。

如果有其他人在調試過程中被錯誤困惑,就要離開它。還因爲這些評論提高了我對PHP中對命名空間的理解。

EDIT2:,以防有人絆倒在此錯誤並想知道如何解決實際問題(getallheaders沒有受到nginx的定義),它已經在這裏找到答案:Get the http headers from current request in PHP

+0

讓我知道如果你需要我的答案任何幫助。 –

沙发
0
2

全局函數可從任何名稱空間獲得。您不需要像其他答案建議的那樣添加前綴。

此錯誤表示在名爲getallheaders()的全局名稱空間或當前名稱空間中沒有定義函數。該函數是apache_response_headers()的別名,也可能不存在。我假設PHP不作爲這些功能所需的apache模塊運行。

+1

我被其他答案困惑了。因爲我有多個第三方庫,它們在名稱空間類中調用標準php函數。他們沒有在每百個內置的php函數前面有一個反斜槓......但類定義文件充斥着命名空間(比如,paypal rest api)。所以你的答案最有意義! – IncredibleHat

+0

如果有另一個名稱空間定義一個具有相同名稱的函數,則這是必需的。 –

+1

@TomMettam如果您已經在名爲getallheaders()的當前名稱空間中定義了另一個函數,那麼您將使用' getallheaders()'來訪問全局函數,但這不是這種情況。 – Devon

板凳
0
0

通過添加在前面一個反斜槓如下所示:$headers = getallheaders();

如果您不在函數前面添加此反斜線,它會假定該函數與其從中調用的類位於同一個命名空間中。添加反斜槓使得它可以在全局命名空間中查找該函數,這是函數所在的位置。

0
votes
answers
8 views
+10

OpenCart返回數組到JSON並傳遞給jQuery

0

我有問題要在jQuery中返回一個數組。我用函數來響應來自mysql的數據,我不得不添加它做數組並返回查看。這就像幻燈片一樣,每5秒鐘顯示一次不同的評論。OpenCart返回數組到JSON並傳遞給jQuery

這是我的代碼: 控制器:

$this->load->model('catalog/review'); 
    $current_store = $this->config->get('config_store_id'); 


    $feedbacks = $this->model_catalog_review->getFeedbacksByStore($current_store); 


     $this->data['feedbackscrazys'][] = array(
      'feedback_name' => $feedbacks['form_name'], 
      'feedback_text' => $feedbacks['feedback'], 
     ); 

型號:

public function getFeedbacksByStore($id) { 
    $sql = "SELECT * FROM " . DB_PREFIX . "feedbackcrazy"; 
    $sql .= " WHERE shop_id = ".$id." AND show_index=1"; 
    $sql .= " ORDER BY RAND() LIMIT 10"; 
    $query = $this->db->query($sql); 

    if($query->num_rows > 0) { 
     return $query->row; 
    } else { 
     return 0; 
    } 


} 

和視圖:

var feedbacks = function() { 
// here i want to replace this code with the results of array 
var jsontext ='[{"feedback_author":"Vesela Chobanova","feedback_text" : "Thanks for the quick delivery and the beautiful clothes! :):)"},{"feedback_author": "Dimitar Nedelchev","feedback_text" : "You are great! You are one of the few to give sincere and unexpected rewards! Thank you very much!"},{"feedback_author": "Bojidara Karajorova","feedback_text" : "Thank you for your service responsiveness :)"},{"feedback_author": "Maria Rizova","feedback_text" : "Thank you very much for the Childrens Gold Contrast Gown. She is very beautiful !! thank you very much ."},{"feedback_author": "Violeta Stefanova","feedback_text" : "Hello, I ordered several times from Crazy kids. I am very pleased with both the quality of clothes and the service. When I need advice, I always get full co-operation. Thanks!"},{"feedback_author": "Maria Hristova","feedback_text" : "Excellent quality! Very good attitude and full cooperation. thanks "},{"feedback_author": "Stefka Mihova","feedback_text" : "Thanks to the quick delivery and the amazing Polish hats. I expect a further load from them"},{"feedback_author": "Daniela Kosova","feedback_text" : "The delivery was super fast. Thanks. We are very pleased with the clothes we received"},{"feedback_author": "Silvia Purvanova","feedback_text" : "The dress I received was amazing. Thanks for the quick delivery and the wonderful attitude on the phone"}]'; 
var json = JSON.parse(jsontext); 
var i = 0; 
var fnchange = function() { 
    $('#footerfeedbackItemContent').animate({'opacity': 0}, 2000, function() { 
     $(this).text(json[i]['feedback_text']); 
    }).animate({'opacity': 1}, 2500); 

    $('#footerfeedbackItemCustomer').animate({'opacity': 0}, 2000, function() { 
     $(this).text(json[i]['feedback_author']); 
    }).animate({'opacity': 1}, 2500); 

    if(++i < json.length){ 
     setTimeout(fnchange, 10000); 
    } else { 
     i = 0; 
     setTimeout(fnchange, 10000); 
    } 
}; 
setTimeout(fnchange, 1); 


}; 
setTimeout(feedbacks,1); 
沙发
0
0

我不知道你的Opencart的購物車版本,但嘗試out this

public function myData(){ 
    $this->load->model('catalog/review'); 
    $current_store = $this->config->get('config_store_id'); 
    $feedbacks = $this->model_catalog_review->getFeedbacksByStore($current_store); 

     $this->data['feedbackscrazys'][] = array(
      'feedback_name' => $feedbacks['form_name'], 
      'feedback_text' => $feedbacks['feedback'], 
     ); 
     //add this line 
    json_encode($this->data); 

    //if opencart 2.3.x+ 
    //$this->response->addHeader('Content-Type: application/json'); 
    //$this->response->setOutput(json_encode($data)) 
    } 

這是Opencart的2.3.x版本越來越典型的JSON數據+

public function about() 
    { 
     $data['name'] = $this->config->get('config_name'); 
     $data['version'] = "OpenCart ".VERSION; 
     //$data['name'] = $this->config->get('config_name'); 
     $data['config_address'] = $this->config->get('config_address'); 
     $data['config_telephone'] = $this->config->get('config_telephone'); 
     $data['config_address'] = $this->config->get('config_address'); 
     $data['config_currency'] = $this->config->get('config_currency'); 
     //the last two lines will return json data 
     $this->response->addHeader('Content-Type: application/json'); 
     $this->response->setOutput(json_encode($data)); 
    } 
+0

是的,這可能是正確的方式的一個例子,但是我的版本是1.5.6.4 .... –

+0

如果有是一種停止對此查詢進行緩存的方法...或以其他方式執行...... –